(function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); EOL.namespace('profile'); EOL.profile.timers = {}; //we really have to stop doing this, library files which only contain function/object definitions should be lazy loaded window.addEvent('domready', function() { var dialogHash = window.location.hash; switch (dialogHash) { case "#pledgeDialog": EOL.pledge.verifyPledge(); break; case "#profleImageDialog": EOL.profileImage.open('provider'); break; case "#idVerification": EOL.idVerifRequestModal.open(); break; } //setup smarterer test links in test list modals $(document.body).addEvent('click:relay(a.smartererTestLink)',function(event, target){ var urlSlug = target.getProperty('data-urlSlug'); var elanceCallToAction = target.getProperty('data-elanceCallToAction'); var testsListDialog = EOL.profile.getTestsListDialog(); testsListDialog.hide(); EOL.smartererTestWidget.showModalByCallToAction(urlSlug, elanceCallToAction); }); $$('.test_menu').addEvents({ mouseenter: function(){ $$('.eol-tooltip').addClass('displayNone'); var skillId = $(this).getParent('tr').get('data-id'); if (EOL.profile.timers[skillId]) clearTimeout(EOL.profile.timers[skillId]); var tooltip = $(this).getParent().getElement('.eol-tooltip'); tooltip.removeClass('displayNone'); }, mouseleave: function(){ var skillId = $(this).getParent('tr').get('data-id'); var tooltip = $(this).getParent().getElement('.eol-tooltip'); EOL.profile.timers[skillId] = setTimeout(function(){ tooltip.addClass('displayNone'); }, 400); } }); $$('.percentile_icon_btn').addEvents({ click: function() { var tooltip = $(this).getParent().getElement('.eol-tooltip'); if (tooltip.hasClass('displayNone')) { $$('.eol-tooltip').addClass('displayNone'); tooltip.removeClass('displayNone'); } else { tooltip.addClass('displayNone'); } } }); }); EOL.profile.toggleSnapshot = function(type) { if(type == '12mo') { var i = 1; while($('snapshot-12mo-'+i)) { $('snapshot-12mo-'+i).style.display = ''; $('snapshot-life-'+i).style.display = 'none'; if($('snapshot-label-12mo-'+i)) { $('snapshot-label-12mo-'+i).style.display = ''; $('snapshot-label-life-'+i).style.display = 'none'; } i++; } $('snapshot-12mo').addClass('selected'); $('snapshot-life').removeClass('selected'); } else if(type == 'life') { var i = 1; while($('snapshot-12mo-'+i)) { $('snapshot-life-'+i).style.display = ''; $('snapshot-12mo-'+i).style.display = 'none'; if($('snapshot-label-life-'+i)) { $('snapshot-label-life-'+i).style.display = ''; $('snapshot-label-12mo-'+i).style.display = 'none'; } i++; } $('snapshot-life').addClass('selected'); $('snapshot-12mo').removeClass('selected'); } } EOL.profile.switchCategory = function(catid,baseUrl) { window.location = baseUrl + ((catid) ? (catid + '/') : ''); } EOL.profile.clickAwayMenu = function(event) { var el = null; if(window.event) el = window.event.srcElement; else el = (event.target.tagName) ? event.target : event.target.parentNode; do { if(el.id == 'catlist-selector' || el.id == 'catlist') return; } while (el = el.parentNode); EOL.profile.toggleCatlist(); } EOL.profile.toggleCatlist = function() { if($('catlist-c').style.display == 'none') { $('catlist-c').style.display = ''; if( document.addEventListener ) { //mozilla document.addEventListener('mousedown', EOL.profile.clickAwayMenu, false); } else if( document.attachEvent ) { //ie document.attachEvent('onmousedown', EOL.profile.clickAwayMenu); } } else { $('catlist-c').style.display = 'none'; if( document.removeEventListener ) { //mozilla document.removeEventListener('mousedown', EOL.profile.clickAwayMenu, false); } else if( document.detachEvent) { //ie document.detachEvent('onmousedown', EOL.profile.clickAwayMenu); } } } EOL.profile.userVideoDoialog = null; EOL.profile.openUserVideo = function(videoURL) { if (!EOL.profile.userVideoDoialog) { EOL.profile.userVideoDoialog = new EOL.dialog( '', { position:'fixed', modal:true } ); //$('getStartedVideo').set('html', ''); } EOL.profile.userVideoDoialog.show(); } EOL.profile.toggleRollbar = function() { var isEditPage = document.URL.indexOf("/edit/") >= 0; var hasWelcomeBanner = $('welcome-wrapper'); var isFocusedOnSample = document.URL.indexOf("#posSlide") >= 0; var isPortfolioPage = $('cta-banner').hasClass('portfolio'); var isHomepage = $('cta-banner').hasClass('homepage'); var userIsAvailable = $$('.p-away').length <= 0; var offset = 0; offset = hasWelcomeBanner ? 345 : 230; if (isPortfolioPage){ offset = hasWelcomeBanner || isFocusedOnSample ? 300 : 185; } offset = isHomepage ? 510 : offset; if (userIsAvailable && !isEditPage){ EOL.belowFold.init(offset, true, function(){ try{ $('cta-banner').set('tween', { duration:'short' }); $('cta-banner').tween('top', ['-80','0']); } catch(err){} }, function(){ try{ $('cta-banner').set('tween', { duration:'short' }); $('cta-banner').tween('top', ['0','-80']); } catch(err){} }); } } EOL.namespace('portfolio.list'); EOL.portfolio.list.wait = null; EOL.portfolio.list.current = 1; EOL.portfolio.list.getItemCount = function() { var i = 1; while($('portfolio-item-'+i)) { i++; } return i - 1; } EOL.portfolio.list.mouseDown = function(event, elem){ $(elem).addClass('down'); return true; }; EOL.portfolio.list.mouseUp = function(event, elem){ $(elem).removeClass('down'); $(elem).onclick(); }; EOL.portfolio.list.next = function() { if(EOL.portfolio.list.wait) return; EOL.portfolio.list.wait = true; var count = EOL.portfolio.list.getItemCount(); var expandEffect = new Fx.Tween('portfolio-list', { duration:1000, transition:Fx.Transitions.Expo.easeOut, onComplete: EOL.portfolio.list.finish}); //get current left var curPos = parseInt($('portfolio-list').offsetLeft); var nextPos = curPos - 360; var maxWidth = (count-1) * 360 * -1; if(nextPos < maxWidth) { EOL.portfolio.list.wait = null; return; } if(EOL.portfolio.list.current + 1 >= count) { $('portfolio-right').addClass('transparent'); } //update count EOL.portfolio.list.current++; if(!$('img-'+EOL.portfolio.list.current).src) { $('img-'+EOL.portfolio.list.current).src = portfolioImg[EOL.portfolio.list.current][0]; $('img-'+EOL.portfolio.list.current).className = portfolioImg[EOL.portfolio.list.current][1]; } $('portfolio-left').removeClass('transparent'); expandEffect.start('left', nextPos.toString()+'px'); }; EOL.portfolio.list.previous = function() { if(EOL.portfolio.list.wait) return; EOL.portfolio.list.wait = true; var expandEffect = new Fx.Tween('portfolio-list', { duration:1000, transition:Fx.Transitions.Expo.easeOut, onComplete: EOL.portfolio.list.finish }); //get current left var curPos = parseInt($('portfolio-list').offsetLeft); var nextPos = curPos + 360; if(nextPos > 0) { EOL.portfolio.list.wait = null; return; } if(EOL.portfolio.list.current - 1 <= 1) { $('portfolio-left').addClass('transparent'); } //update count EOL.portfolio.list.current--; if(!$('img-'+EOL.portfolio.list.current).src) { $('img-'+EOL.portfolio.list.current).src = portfolioImg[EOL.portfolio.list.current]; } $('portfolio-right').removeClass('transparent'); expandEffect.start('left', nextPos.toString()+'px'); }; EOL.portfolio.list.finish = function(){ EOL.portfolio.list.wait = null; }; EOL.namespace('dashboard.widget'); EOL.dashboard.widget.load = function(id,url,params,callback,useJSONP) { if(!params) params = ''; if(typeof(useJSONP)==='undefined') useJSONP = false; var handleSubmitSuccess = function(response) { if (!useJSONP) { response = JSON.decode(response); } $(id).set('opacity',0); $(id).set('html',response.data.html); new Fx.Tween(id,{duration:200}).start('opacity',1); if(callback) callback(); }; var options = { url: url, method: 'get', data: params, onSuccess: handleSubmitSuccess, onFailure: function() { } }; if (useJSONP) { curAsyncReq = new Request.JSONP(options); } else { curAsyncReq = new Request(options); } curAsyncReq.send(); }; EOL.profile.showMoreSkills = function() { $('showMoreSkills').hide(); $$('#profileSkills tr').removeClass('displayNone'); }; EOL.profile.showTestsDialog = function(id) { var tests = $(id); if (!tests) return; var dialogContent = $(id).get('html'); var dialog = EOL.profile.getTestsListDialog(); dialog.update(dialogContent); dialog.show(); }; EOL.profile.getTestsListDialog = function(){ if (!EOL.profile.testsDialog) { EOL.profile.testsDialog = new EOL.dialog('', {position: 'fixed', modal:true, width:570}); } return EOL.profile.testsDialog; }; /* code using elance dialogs */ EOL.namespace('addtolist'); EOL.addtolist.dialog = null; EOL.addtolist.curElem = null; EOL.addtolist.signals = { show: new signals.Signal(), close: new signals.Signal(), save: new signals.Signal() }; EOL.addtolist.toggleDialog = function(objId, objType, context) { var request = new Request({ url: '/php/myelance/main/addToListHTML.php?objid='+escape(objId)+'&objtype='+escape(objType)+'&context='+context+'&t=' + getDateTime(), method: 'get', onSuccess: function(req) { EOL.addtolist.dialog = new EOL.dialog(req, {position: 'fixed', modal:true, close:true, afterHide: function() {EOL.addtolist.opened = false;}}); EOL.addtolist.dialog.show(); }, onFailure: function() {} }).send(); } EOL.addtolist.opened = false; EOL.addtolist.close = function(saved) { EOL.addtolist.dialog.hide(); EOL.addtolist.opened = false; if (!saved) { EOL.addtolist.signals.close.dispatch(); } } EOL.addtolist.open = function(objId, objType, context, elemId) { // Remove # sign from job title, it can be mixed with anchor link objType = objType.replace(/#/g, ''); if (EOL.addtolist.opened) return; EOL.addtolist.opened = true; EOL.addtolist.curElem = elemId; //context is S for seller (profile), B for buyer (job) var url = '/php/myelance/main/addWatchList.php?mode=check&addToListObjType='+context+'&addToListObjId='+objId+'&addToListObjName='+escape(objType); var req = new Request( { url: url, asynchronous:true, method:'get', onSuccess: function(t){ var celldata = t.split('##'); if (celldata[0].indexOf('NoAuth') == 0) { var conf = new EOL.dialog(['Not Authorized','You are not authorized to perform this action.'], {position: 'fixed', modal:true, width: 300, close:true}).show(); return; } // check to see if we got no for our question, does the user already exist? if(celldata[0].indexOf('No') != -1){ EOL.addtolist.toggleDialog(celldata[1], celldata[2], context); }else{ if(context=='S' || context=='B') { if($('header-watchlist')) $('header-watchlist').innerHTML = '» On Watch List'; if($('menu-watchlist')) $('menu-watchlist').innerHTML = 'On Watch List'; var conf = new EOL.dialog(['User already added',celldata[2] + ' is already in your Watch List. '], {position: 'fixed', modal:true, width: 300, close:true}).show(); } else if (context=='P') { var handleStar = EOL.addtolist.handleStarSuccess( EOL.addtolist.curElem,'project'); handleStar(); if ($(EOL.addtolist.curElem).get('text')) { $(EOL.addtolist.curElem).set('text', $(EOL.addtolist.curElem).title); } } return; } }, onFailure: function(){ alert('There was an error processing your request. Please try again.') } } ); req.send(); EOL.addtolist.signals.show.dispatch(); } EOL.addtolist.submit = function() { if ($('addToListBtn')) disableElems($('addToListBtn')); var objType = $('addToListform').elements['addToListObjType'].value; var nav = 'provider'; if (objType == 'B') {nav = 'buyer';} else if(objType == 'P') {nav = 'project';} var postData = $('addToListform').toQueryString(); var numOfChars = simpleTextCount($('comments')); if (numOfChars > 4000){ $('addToListcharLimit').setStyle('color', '#EE2C2C'); enableElems($('addToListBtn')); return false; } var options = { url: '/php/myelance/main/addWatchList.php?t=' + getDateTime(), method: 'post', data: postData, onSuccess: function(response) { if ($('addToListBtn')) enableElems($('addToListBtn')); if( response.length > 0 && (response.indexOf('success') == -1)) { var conf = new EOL.dialog(['We\'re Sorry',response], {position: 'fixed', modal:true, width: 300, close:true}).show(); } else { EOL.addtolist.close(true); if(objType == 'S' || objType == 'B') { if($('header-watchlist')) $('header-watchlist').innerHTML = 'On Watch List'; if($('menu-watchlist')) $('menu-watchlist').innerHTML = ' On Watch List'; var handleStar = EOL.addtolist.handleStarSuccess( EOL.addtolist.curElem,nav); handleStar(); if ($(EOL.addtolist.curElem).get('text')) { $(EOL.addtolist.curElem).set('text', $(EOL.addtolist.curElem).title); } } else if(objType == 'P') { if(EOL.addtolist.curElem.indexOf('watchlistBox') == 0) { $(EOL.addtolist.curElem) .set('href', '/php/myelance/main/watchCenter.php?type='+nav) .set('text', 'On Watch List') .set('title', 'On Watch List') .removeClass('sprite-watchlist-star-small-off') .addClass('sprite-watchlist-star-small-on'); } else { var handleStar = EOL.addtolist.handleStarSuccess( EOL.addtolist.curElem,nav); handleStar(); if ($(EOL.addtolist.curElem).get('text')) { $(EOL.addtolist.curElem).set('text', $(EOL.addtolist.curElem).title); } } } EOL.addtolist.signals.save.dispatch(); } }, onFailure: function() {alert('There was an error processing your request. Please try again.')} }; var req = new Request(options); req.send(); } EOL.addtolist.handleStarSuccess = function(elemId,nav) { if(!elemId) elemId = 'watchlistIcon'; return function() { var el = $(elemId); if(!el) return; if(el.hasClass('sprite-watchlist-star-big-off')) { removeClassName(el, 'sprite-watchlist-star-big-off'); addClassName(el, 'sprite-watchlist-star-big-on'); } else if(el.hasClass('sprite-watchlist-star-small-off')) { removeClassName(el, 'sprite-watchlist-star-small-off'); addClassName(el, 'sprite-watchlist-star-small-on'); } el.setAttribute('onclick', "return false;"); el.title = "On Watch List"; var myfun = function() { window.location = '/php/myelance/main/watchCenter.php?type='+nav; } smartAddEvent(el,'click',myfun); } } EOL.addtolist.setTextColor = function(objId, colorCode) { $(objId).setStyle('color', colorCode); } //during build... //copied to (not in p4 depot) presentation/symfonyBundles/Elance/PresentationFrameworkBundle/Resources/public/js/featuredUpsell.js //copied from (in p4 depot) html/scripts/post/featuredUpsell.js EOL.namespace('featuredUpsell'); EOL.featuredUpsell.setupRelistAsFeaturedModalTrigger = function (elementId, jobId){ window.addEvent('domready', function(){ $(elementId).addEvent('click', function(){ var modal = new EOL.featuredUpsell.relistAsFeaturedModal({'jobId':jobId}); modal.open(); }); }); }; EOL.featuredUpsell.setupRelistFeaturedJobModalTrigger = function (elementId, jobId){ window.addEvent('domready', function(){ $(elementId).addEvent('click', function(){ var modal = new EOL.featuredUpsell.relistFeaturedJobModal({'jobId':jobId}); modal.open(); }); }); }; EOL.featuredUpsell.setupMaxInvitesModalTrigger = function (elementId, jobId){ window.addEvent('domready', function(){ $(elementId).addEvent('click', function(){ var modal = new EOL.featuredUpsell.maxInvitesReachedModal({'jobId':jobId}); modal.open(); }); }); }; EOL.featuredUpsell.setupPotentialMaxInvitesModalTrigger = function (elementId, jobId){ window.addEvent('domready', function(){ $(elementId).addEvent('click', function(){ var modal = new EOL.featuredUpsell.potentialMaxInvitesReachedModal({'jobId':jobId}); modal.open(); }); }); }; EOL.featuredUpsell.setupConfirmedFeaturedModalTrigger = function (elementId, jobId, paymentId){ window.addEvent('domready', function(){ $(elementId).addEvent('click', function(){ var modal = new EOL.featuredUpsell.confirmedFeaturedModal({'jobId':jobId, 'paymentId':paymentId}); modal.open(); }); }); }; EOL.featuredUpsell.setupBaseModalTrigger = function (elementId, jobId){ window.addEvent('domready', function(){ $(elementId).addEvent('click', function(){ var modal = new EOL.featuredUpsell.genericModal({'jobId':jobId}); modal.open(); }); }); }; EOL.featuredUpsell.setupConfirmedFeaturedOnLoadTrigger = function(jobId, paymentId){ window.addEvent('domready', function(){ EOL.featuredUpsell.showConfirmedFeaturedModal(jobId, paymentId); }); } EOL.featuredUpsell.setupAlreadyFeaturedOnLoadTrigger = function(jobId, paymentId){ window.addEvent('domready', function(){ EOL.featuredUpsell.showAlreadyFeaturedModal(jobId, paymentId); }); } EOL.featuredUpsell.setupGenericFeaturedOnLoadTrigger = function(jobId, paymentId){ window.addEvent('domready', function(){ EOL.featuredUpsell.showGenericFeaturedModal(jobId, paymentId); }); } //helpers to show default modals EOL.featuredUpsell.showMaxInvitesReachedModal = function(jobId) { var modal = new EOL.featuredUpsell.maxInvitesReachedModal({'jobId':jobId}); modal.open(); } EOL.featuredUpsell.showPotentialMaxInvitesReachedModal = function(jobId) { var modal = new EOL.featuredUpsell.potentialMaxInvitesReachedModal({'jobId':jobId}); modal.open(); } EOL.featuredUpsell.showRelistAsFeaturedModal = function(jobId) { var modal = new EOL.featuredUpsell.relistAsFeaturedModal({'jobId':jobId}); modal.open(); } EOL.featuredUpsell.showConfirmedFeaturedModal = function(jobId, paymentId) { var modal = new EOL.featuredUpsell.confirmedFeaturedModal({'jobId':jobId, 'paymentId':paymentId}); modal.open(); } EOL.featuredUpsell.showGenericFeaturedModal = function(jobId) { var modal = new EOL.featuredUpsell.genericModal({'jobId':jobId}); modal.open(); } EOL.featuredUpsell.showAlreadyFeaturedModal = function(jobId) { var modal = new EOL.featuredUpsell.alreadyFeaturedModal({'jobId':jobId}); modal.open(); } //defining the modal class EOL.featuredUpsell.modal = new Class({ modalRequest:null, //used by extending classes to add GET params to the modal ajax request modalRequestParameters:{}, dialog:null, jobId:null, modalUrl:null, modalUrlAction:null, height:null, width:null, communicationErrorMessage:'Unable to communicate with Elance, please refresh and try again.', onCommunicationError: function(response) { alert(this.communicationErrorMessage); }, onConfirm:function(event){ window.location.href = $(this.dialog.containerEl).getElement('a.confirm').getAttribute('href'); }, onCancel:function(event){ this.hide(); }, className:'', redirect:null, optionDefaults:{ jobId:null, modalUrl: '/php/post/main/featuredUpsellAHR.php', modalUrlAction:null, height:null, width:null, className:'', redirect:window.location.href }, options:{},//used by extending classes to override options initialize: function(options){ this.options = Object.merge({}, this.optionDefaults, this.options, options); var self = this; if (!this.options.jobId){ throw "You must supply a jobId option"; } if (!this.options.modalUrl){ throw "You must supply the url where the modal can be fetched"; } if (!this.options.modalUrlAction){ throw "You must supply the controller action (i.e. MaxInvitesModal)"; } this.setObjectAttributesFromOptions(); this.dialog = new EOL.dialog('', { position: 'scroll', className:'featuredUpsellDialog '+this.className, width:this.width,height:this.height}); //used for any additional parameters to be sent in modal request by extending classes var requestOptions = { 'url':this.modalUrl, 'data':Object.merge({},{'jobId':this.jobId, 'action':this.modalUrlAction, 'redirect':this.redirect},this.modalRequestParameters), 'method':'get', 'onSuccess':function(response){ self.update(response.data.modalContent); }, 'onFailure':function(response){ self.onCommunicationError(response); } }; this.modalRequest = new Request.JSON(requestOptions); }, setObjectAttributesFromOptions: function(){ var self = this; Object.each(this.options, function(item, key){ self[key] = item; }); }, trackEvent: function(eventName){ if (_gaq && _gaq.push) { _gaq.push(['_trackEvent', 'feature_upsell', eventName, this.options.modalUrlAction]); } }, //This should be used to open the model as a response to the user interacting directly with a UI element. open: function(){ this.trackEvent('open'); this.show(); }, //This should be used to open the model as a secondary result of a user interaction (i.e. another interaction caused a state in which this modal should be displayed) show: function(){ this.showLoading(); this.modalRequest.send(); }, //this is used to close the modal as a secondary result of a tracked user interaction, but it should not be tracked hide: function(){ this.dialog.hide(); }, //this maps to ui elements that the user interacts with, which have the intent of closing the modal, these should be tracked close: function(){ this.trackEvent('close'); this.hide(); }, //reset the dialog close button to response to our handlers and not the default dialog handler resetCloseButton: function(){ var self = this; if ($(this.dialog.containerEl)){ oldCloseButton = $(this.dialog.containerEl).getElement('.eol-dialog-close'); //this removes event handlers var newCloseButton = oldCloseButton.clone(); //setup new handler newCloseButton.addEvent('click', function(){ self.close(); }); //append new close button newCloseButton.inject(oldCloseButton, 'after'); oldCloseButton.dispose(); } }, showLoading: function(){ var loadingWidth = this.width?this.width:'auto'; var loadingHeight = this.height?this.height:'auto'; var loading = ''; this.dialog.update(loading); this.dialog.show(); //lazy reset of close button this.resetCloseButton(); }, update: function(htmlContent){ this.dialog.update(htmlContent); var self = this; confirmButton = $(this.dialog.containerEl).getElement('a.confirm'); confirmButton && confirmButton.addEvent('click', function(event){ event.stop(); self.trackEvent('confirm'); self.onConfirm(event); }); var closeButton = $(this.dialog.containerEl).getElement('a.cancel'); closeButton && closeButton.addEvent('click', function(event){ event.stop(); self.trackEvent('cancel'); self.onCancel(event); }); }, }); EOL.featuredUpsell.maxInvitesReachedModal = new Class({ Extends:EOL.featuredUpsell.modal, options: { modalUrlAction: 'MaxInvitesModal', width:548, className:'maxInvitesReachedModal', }, //While overwritting onConfirm is unecessary here, I have provided it to demonstrate how to call the parents onConfirm method onConfirm:function(event){ this.parent(event); } }); EOL.featuredUpsell.potentialMaxInvitesReachedModal = new Class({ Extends:EOL.featuredUpsell.modal, options: { modalUrlAction: 'PotentialMaxInvitesModal', width:548, className:'potentialMaxInvitesReachedModal' } }); EOL.featuredUpsell.genericModal = new Class({ Extends:EOL.featuredUpsell.modal, options: { modalUrlAction: 'GenericModal', width:693, height:430, className:'genericModal', } }); EOL.featuredUpsell.confirmedFeaturedModal = new Class({ Extends:EOL.featuredUpsell.modal, initialize:function(options){ this.modalRequestParameters={'paymentId':options.paymentId}; this.parent(options); }, options:{ modalUrlAction: 'ConfirmedFeaturedModal', width:527, height:285, className:'confirmedFeaturedModal', }, onConfirm:function(){ //intentionally avoiding parent behavior... just want to close modal this.hide(); } }); EOL.featuredUpsell.alreadyFeaturedModal = new Class({ Extends:EOL.featuredUpsell.modal, options: { modalUrlAction: 'AlreadyFeaturedModal', width:548, height:120, className:'AlreadyFeaturedModal' }, onConfirm:function(){ //intentionally avoiding parent behavior... just want to close modal this.hide(); } }); EOL.featuredUpsell.relistAsFeaturedModal = new Class({ Extends:EOL.featuredUpsell.modal, options: { modalUrlAction: 'RelistAsFeaturedModal', width:548, height:460, className:'RelistAsFeaturedModal' } }); EOL.featuredUpsell.relistModal = new Class({ Extends:EOL.featuredUpsell.modal, relistFailureMessage:'Unfortunatly you job could not be relisted. Please contact support.', onConfirm:function(event){ var url = $(this.dialog.containerEl).getElement('a.confirm').getAttribute('href'); var self = this; var relistRequest = new Request.JSON({ 'url':url, 'data':{jobId:self.jobId}, 'method':'post', 'onSuccess':function(response){ if (response.data.relisted){ self.trackEvent('relistSuccess'); self.onRelistSuccess(response); } else { self.trackEvent('relistFailure'); self.onRelistFailure(response); } }, 'onFailure':function(response){ self.onCommunicationError(response); } }); relistRequest.send(); }, onRelistSuccess:function(response){ if (this.options.onRelistSuccess){ this.options.onRelistSuccess.call(this, response); } return; }, onRelistFailure:function(response){ if (this.options.onRelistFailure) { this.options.onRelistFailure.call(this, response); } else { //TODO: something better than an alert alert(this.relistFailureMessage); } } }); EOL.featuredUpsell.relistFeaturedJobModal = new Class({ Extends:EOL.featuredUpsell.relistModal, options:{ modalUrlAction: 'RelistFeaturedJobModal', width:577, height:187, className:'relistFeaturedJobModal' } }); /* contact me panel using smarty templates with mootools */ EOL.namespace('contactme'); EOL.contactme.dialog = null; EOL.contactme.signals = { show: new signals.Signal(), invite: new signals.Signal(), newJob: new signals.Signal(), close: new signals.Signal() }; EOL.contactme.showFeaturedUpsellMaxInvitesReachedModal = function(jobId){ EOL.featuredUpsell.showMaxInvitesReachedModal(jobId); } EOL.contactme.showFeaturedUpsellGenericModal = function(jobId){ EOL.featuredUpsell.showGenericFeaturedModal(jobId); } EOL.contactme.showFeaturedUpsellConfirmationModal = function(jobId, paymentId){ EOL.featuredUpsell.showConfirmedFeaturedModal(jobId, paymentId); } EOL.contactme.open = function(userid, catid, bidid, source) { //if(!tab) tab = null; //if(!mode) mode = null; if (!bidid) bidid = ''; if (!source) source = ''; //multiple userids can only be used in invite mode if(typeof userid == "array") { var userids = userid[0]; for(var i=1; i Internal Error, cannot connect call, please try again at a later time. "); callSessionId=null; } //get call status from provider function getCallStatus(){ if(callSessionId!=null){ var iframe = "https://service.ringcentral.com/ringout.asp?cmd=status&format=html&css="+escape(URL_BASE+"/styles/ringCentralStatus.css")+"&sessionid="+callSessionId+"&WS="+callWS+'&t='+getDateTime(); var sframe = $('callStatusFrame'); sframe.src=iframe; setTimeout("getCallStatus()", 5000); } } function isCallInProgress(){ if(callSessionId){ var request = new Request( { url: '/php/myelance/main/call.php?ctx=contactMe&mode=status&call_sk='+callSessionId+'&call_WS='+callWS+'&t='+getDateTime(), method: 'get', onSuccess: updCallSession, onFailure: updCallSession }).send(); setTimeout("isCallInProgress()", 30000); } } function updCallSession(tspt){ if(!tspt || tspt!=1){ callSessionId=null; } } function setCallStatus(statusText){ $('callStatus').innerHTML="
Call Status:
"+statusText+"
"; } function saveChatStatus(){ availablestatus = document.getElementsByName("availability"); if(availablestatus[0].checked) { toggleChatStatus('1'); $('available').attributes['onclick'].value = ''; $('notavailable').attributes['onclick'].value = 'javascript:enableChatStatus();'; } else { toggleChatStatus('0'); $('notavailable').attributes['onclick'].value = ''; $('available').attributes['onclick'].value = 'javascript:enableChatStatus();'; } $('confirmdiv').removeClass('displayNone'); $('save_action').addClass('btn-small-disabled'); $('save_action').removeClass('btn-small-normal'); $('save_action').attributes['href'].value = 'javascript:void(0)'; } function enableChatStatus(){ $('save_action').addClass('btn-small-normal'); $('save_action').removeClass('btn-small-disabled'); $('save_action').attributes['href'].value = 'javascript:saveChatStatus();'; } function cancelChatStatus(){ window.location.href = '/settings'; } function toggleChatStatus(chatState){ var username = getCookie("userid"); var d = new Date(); var request = new Request({ url: '/php/userplane/main/chat.php?ctx=myelance&userid='+username + '&chatstate=' + chatState + '&t='+d.getTime(), method: 'get', onSuccess: updateMyElanceChat, onFailure: function() {} }).send(); } function updateMyElanceChat(resp){ if(resp.length >0){ var resObj = eval('({' + resp + '})'); if(resObj.prefEnabled != 'N'){ if($("EnableChatSubText")) { document.getElementById("EnableChatSubText").innerHTML = resObj.html; document.getElementById("EnableChatSubText").href = 'javascript:toggleChatStatus(\'' + resObj.state + '\');'; } } } else { alert('Failed to Toggle your chat status, please call Elance customer support and report this problem.'); } } /*** AGENT STUFF ***/ // Turn on extra stuff for agent mode function activateContactMeAgentMode(){ $('agentNotice').removeClass('displayNone'); $('inviteAgentSuccessMessage').removeClass('displayNone'); } // turn off extra stuff for agent mode. Called when the panel is closed function deactivateContactMeAgentMode(){ $('agentNotice').addClass('displayNone'); $('inviteAgentSuccessMessage').addClass('displayNone'); } function trackInviteUser(buyerId, sellerId, jobId, source) { var params = { userId: buyerId, logEntries: { freelancerId: sellerId, jobId: jobId } }; if (source.length) { if (source.indexOf('.') > 0) { var s = source.split('.'); params.pageName = s[0]; params.metricTags = { area: s[1] }; } else { params.pageName = source ; } } $el('send', 'userAction', 'INVITE', 'Freelancer', params); } function inviteUser(buyerId, sellerId, /* optional */ catId, source) { if(!catId) catId = null; if(!source) source = ''; // Find the checked jobid [only 1!] var jobId; i = 0; while ($('existing'+i)) { if ($('existing'+i).checked) { jobId = $('existingId'+i).value; inviteLimitReached = $('existingId'+i).get('data-inviteLimitReached'); if (inviteLimitReached){ EOL.contactme.dialog.hide(); EOL.contactme.showFeaturedUpsellMaxInvitesReachedModal(jobId); return; } break; } ++i; } // if we're inviting multiple sellers, this will comma deliminate them sellerId = sellerId.toString(); // If we have dont have a checked job, we need to go to post project if (!jobId) { trackInviteUser(buyerId, sellerId, 'new', source); EOL.contactme.createNewJob('/postjob?inviteId='+ sellerId.replace(/,/g, '_') + '&catId=' + catId + '&inviteSource=' + source); EOL.contactme.signals.newJob.dispatch(); return; } // find all checked agents [could multiple] var agentList = new Array(); var e = document.getElementsByName("inviteAgent"); for(var i = 0; i < e.length; i++){ if( e[i].checked ){ agentList.push( e[i].value ); } } var agentIds = agentList.toString(); var bidPref; var setBidPref = 'N'; var prefSet = document.getElementById('bidPref'); if(prefSet && (prefSet.innerHTML).replace(/^\s+|\s+$/g,"") != '') { setBidPref = 'Y'; chkBox = document.getElementsByName('accept_other_candidates'); bidPref = (chkBox[0].checked) ? 'Y' : 'N'; } // make the ajax request if (jobId) { $('existingProjectButton').addClass('btn-large-disabled').removeClass('btn-large-normal'); $('cancelButton').addClass('btn-large-disabled').removeClass('btn-large-secondary'); trackInviteUser(buyerId, sellerId, jobId, source); var request = new Request.JSON({ url:'/php/profile/main/inviteAHR.php?action=invite&jobId=' +jobId+'&buyerId='+buyerId+ '&sellerId='+sellerId+ '&setBidPref='+setBidPref+ '&bidPref='+bidPref+ '&agentIds='+agentIds+ '&source='+source+ '&t=' + getDateTime(), method: 'get', onSuccess: function(response) { inviteSuccess(response, jobId) }, onFailure: function() { $('existingProjectButton').removeClass('btn-large-disabled').addClass('btn-large-normal'); $('cancelButton').removeClass('btn-large-disabled').addClass('btn-large-secondary'); } }).send(); } } function inviteSuccess(result, jobId) { if (result.status == 'success') { var url = '/job/' + jobId + '/popup/inviteConfirm'; new Request.JSONP({ url: url, method: 'GET', data: { t: new Date().getTime(), result: { sent: result.data.sent, already: result.data.already, bidPlacedAlready: result.data.bidPlacedAlready, invalid: result.data.invalid, own: result.data.own, unavailable: result.data.unavailable, overLimit: result.data.overLimit } }, onComplete: function() { $('existingProjectButton').removeClass('btn-large-disabled').addClass('btn-large-normal'); $('cancelButton').removeClass('btn-large-disabled').addClass('btn-large-secondary'); }, onSuccess: function(r) { EOL.contactme.dialog.hide(); EOL.popups.dialog = new EOL.dialog(r.html); EOL.popups.dialog.show(); } }).send(); EOL.contactme.signals.invite.dispatch(); } else { $('inviteSuccessMessage').style.display = 'none'; $('inviteFailureMessage').style.display = 'block'; $('inviteContent').style.display = 'none'; } } function getBidAcceptPreference() { var sellerid = $('sellerid').value; var id = $$('input[name=projectChoice]:checked')[0].get('value'); var jobid = $('existingId'+id).value; if(jobid) { var request = new Request({ url:'/php/profile/main/inviteAHR.php?action=getBidAcceptPreference&jobid=' +jobid+'&sellerid='+sellerid+ '&t=' + getDateTime(), method: 'get', onSuccess: bidAcceptPreferenceSuccess, onFailure: function() {} }).send(); } } function bidAcceptPreferenceSuccess(response) { var result = eval('('+ response +')'); var bidPref = $('bidPref'); if(result.data.showBidAcceptPref) { bidPref.innerHTML = ''; } else { bidPref.innerHTML = ''; } } /* autoinvite related functions */ EOL.contactme.autoInviteUser = function (jobId, buyerId, sellerId) { source = 'FreelancerRecEmail'; var jobId; i = 0; inviteLimitReached = false; //TODO - take care of the limit case if (inviteLimitReached) { EOL.contactme.showFeaturedUpsellMaxInvitesReachedModal(jobId); return; } // if we're inviting multiple sellers, this will comma deliminate them sellerId = sellerId.toString(); if (!jobId) { return; } // find all checked agents [could multiple] var agentList = new Array(); var e = document.getElementsByName("inviteAgent"); for(var i = 0; i < e.length; i++){ if( e[i].checked ){ agentList.push( e[i].value ); } } var agentIds = agentList.toString(); // make the ajax request if (jobId) { trackInviteUser(buyerId, sellerId, jobId, source); var request = new Request.JSON({ url:'/php/profile/main/inviteAHR.php?action=invite&jobId=' +jobId+'&buyerId='+buyerId+ '&sellerId='+sellerId+ '&agentIds='+agentIds+ '&source='+source+ '&t=' + getDateTime(), method: 'get', onSuccess: function(response) { EOL.contactme.autoInviteSuccess(response, jobId) }, onFailure: function() { alert('Oops, we cannot process your request at this time'); } }).send(); } } EOL.contactme.autoInviteSuccess = function(result, jobId) { if (result.status == 'success') { var url = '/job/' + jobId + '/popup/inviteConfirm'; new Request.JSONP({ url: url, method: 'GET', data: { t: new Date().getTime(), result: { sent: result.data.sent, already: result.data.already, bidPlacedAlready: result.data.bidPlacedAlready, invalid: result.data.invalid, own: result.data.own, unavailable: result.data.unavailable, overLimit: result.data.overLimit } }, onSuccess: function(r) { EOL.popups.dialog = new EOL.dialog(r.html); EOL.popups.dialog.show(); } }).send(); EOL.contactme.signals.invite.dispatch(); } else { alert('Something went wrong. We cannot process your request'); } } /* END - autoinvite related functions */ EOL.namespace('emailFriend'); EOL.emailFriend.dialog = null; EOL.emailFriend.confDialog = null; EOL.emailFriend.open = function(objId, objUrl, objType, msg, share, refer, source_page) { if(!objType) objType = 'project'; var msgData = ''; if(msg) { msgData = '&msg='+encodeURIComponent(msg); } if(!$('emailFriendCss')) Asset.css('/styles/myelance/emailFriend.css,/share.css',{id:'emailFriendCss'}); var postData = 'action=dialog&objId='+escape(objId)+'&objUrl='+escape(objUrl)+'&objType='+escape(objType)+msgData+ (share ? '&share=1' : '') + (refer ? '&refer=1' : '') + (source_page ? '&source='+escape(source_page) : ''); var request = new Request({ url: '/php/promo/main/emailToFriend.php?t=' + getDateTime(), method: 'post', data: postData, onSuccess: function(req) { EOL.emailFriend.dialog = new EOL.dialog(req, {position: 'fixed', modal:true, close:true}); EOL.emailFriend.dialog.show(); if($('emailtemplate')) { var content = EOL.utility.htmlspecialchars_decode($('emailtemplate').innerHTML); $("emailbody").value = content.replace(/
/gi,'\n')+'\n'; simpleTextCounterNegative($('emailbody'),$('charLimit'),1000); } }, onFailure: function() {} }).send(); } EOL.emailFriend.submit = function() { var postData = $('emailfriendform').toQueryString(); var options = { url: '/php/promo/main/emailToFriend.php?t=' + getDateTime(), method: 'post', data: postData, onSuccess: function(response) { if(response.match(/Error/i)){ $('emailErrorMsg').set('html', response).removeClass('displayNone'); }else{ var title = $('emailsuccesstitle').innerHTML; var content = '
' + response+$('emailwhatnext').innerHTML + '
'; title = '

' + title + '

'; var close = 'Close'; var html = title + content + close; EOL.emailFriend.close(); EOL.emailFriend.confDialog = new EOL.dialog(html, {position: 'fixed', modal:true, width: 300, close:true}); EOL.emailFriend.confDialog.show(); } }, onFailure: function() {alert('There was an error processing your request. Please try again.')} }; var req = new Request(options); $('emailErrorMsg').addClass('displayNone'); req.send(); } EOL.emailFriend.close = function() { EOL.emailFriend.dialog.hide(); } EOL.emailFriend.handleEmailListChange = function() { EOL.emailFriend.emailCounter(); EOL.emailFriend.enableDisableActionButton(); } EOL.emailFriend.emailCounter = function() { var arr = $('recipient_list').value.split(','); var total = arr.length - 1; var remainingCount = 100 - total; var text = remainingCount + ' Email(s)'; var color = ''; if(remainingCount < 0) { //text = "-" +(count - 100 )+ ' Email(s)'; color = "#FF0000"; } else { //text = count + ' Email(s)'; color = "#50852C"; } $('totalEmailCount').innerHTML = text; $('totalEmailCount').setStyle('color', color); } EOL.emailFriend.enableDisableActionButton = function() { if($('recipient_list').value) { $('action-button-enabled').setStyle('display', ''); $('action-button-disabled').setStyle('display', 'none'); } else { $('action-button-enabled').setStyle('display', 'none'); $('action-button-disabled').setStyle('display', ''); } } EOL.emailFriend.showError = function (error){ $('emailErrorMsg').removeClass('displayNone'); $('emailErrorMsg').innerHTML = error; } EOL.emailFriend.clearAndHideError = function() { $('emailErrorMsg').innerHTML = ''; $('emailErrorMsg').addClass('displayNone'); } EOL.emailFriend.closeTemporary = function() { Cookie.write('emailMessage', $('emailbody').value); Cookie.write('emailAddresses' ,$('recipient_list').value); Cookie.write('contactCounter', $('google_imported').value + ':' + $('yahoo_imported').value + ':'+ $('hotmail_imported').value); EOL.emailFriend.dialog.hide(); } EOL.emailFriend.bringBackTemporary = function(newImports) { EOL.emailFriend.dialog.show(); // email message and receipients $('emailbody').value = Cookie.read('emailMessage'); // update email address list $('recipient_list').value = Cookie.read('emailAddresses') ? Cookie.read('emailAddresses') : ''; $('emailbody').onchange(); // update the import counter if(newImports > 0 ) { setTimeout(function() {$('recipient_list').highlight()}, 300); } // restore the import counters var counters = Cookie.read('contactCounter').split(':'); $('google_imported').value = counters[0]; $('yahoo_imported').value = counters[1]; $('hotmail_imported').value = counters[2]; if(newImports > 0 ) { var platform = $('platform').value; //alert('pl-' + platform); $( platform + '_imported').value = parseInt($( platform + '_imported').value) + parseInt(newImports); Cookie.write('contactCounter', $('google_imported').value + ':' + $('yahoo_imported').value + ':'+ $('hotmail_imported').value); } EOL.emailFriend.handleEmailListChange(); $('recipient_list').addClass('share-email-dirty'); } EOL.emailFriend.handleContactPicker = function(source) { if(!$('oauthJs')) { Asset.javascript('/scripts/util/oauth.js', {id:'oauthJs', onLoad: function(){ EOL.contactPicker.importContacts(source); return; } } ); } EOL.contactPicker.importContacts(source); } /* CONTACT PICKER RELATED FUNCTIONALITY * */ EOL.namespace('contactPicker'); EOL.contactPicker.dialog = null; EOL.contactPicker.contacts = null; EOL.contactPicker.importContacts = function(source) { if(source == 'google') { EOL.oauth.google.userConsent(); } else if(source == 'yahoo') { EOL.oauth.yahoo.handleImportContacts(); } else if(source == 'hotmail') { EOL.oauth.live.userConsent(); } } /* CONTACT PICKER UI FUNCTIONALITY * */ EOL.contactPicker.loading = null; EOL.contactPicker.showLoading = function(platform) { // clear the arrays EOL.contactPicker.contacts = new Array(); EOL.contactPicker.filteredContacts = new Array(); // render ahr request var action = 'contactsloading'; var postData = 'action='+ action +'&platform='+ platform ; var request = new Request({ url: '/php/framework/main/contactPicker.php?t=' + getDateTime(), method: 'post', data: postData, onSuccess: function(obj) { var res = eval('(' + obj + ')'); if(res.status == 'error') { // handle error } else { EOL.contactPicker.dialog = new EOL.dialog(res.data.html, {position: 'fixed', modal:true, close:true, 'afterHide': function() {EOL.contactPicker.closeForm(); } }); EOL.contactPicker.dialog.show(); } }, onFailure: function() { EOL.emailFriend.bringBackTemporary(); EOL.emailFriend.showError("There was an error processing your request. Please try again."); } }).send(); } EOL.contactPicker.searchReset = true; EOL.contactPicker.search= function() { var keyword = $('search-input').value; if(keyword == 'Search' ) { return; } if(!keyword || keyword == '' || keyword == null) { if(!EOL.contactPicker.searchReset) { EOL.contactPicker.resetContactsList(); EOL.contactPicker.renderContacts(); } return; } // set filtered contacts list EOL.contactPicker.filteredContacts = new Array(); var j=0; for(var i=0; i < EOL.contactPicker.contacts.length; i++) { if(EOL.contactPicker.contacts[i].search.toLowerCase().indexOf(keyword.toLowerCase()) >= 0) { EOL.contactPicker.filteredContacts[j] = EOL.contactPicker.contacts[i]; j++; } } EOL.contactPicker.searchReset = false; // Render the contacts now EOL.contactPicker.renderContacts(); EOL.contactPicker.updateSelectedCount(); } EOL.contactPicker.resetContactsList = function() { EOL.contactPicker.filteredContacts = EOL.contactPicker.contacts; EOL.contactPicker.searchReset = true; } EOL.contactPicker.isChecked = function(email) { for(var i=0; i < EOL.contactPicker.contacts.length; i++) { if(EOL.contactPicker.contacts[i].email == email) { if(EOL.contactPicker.contacts[i].checked == true) return true; else return false; } } return false; } EOL.contactPicker.renderContacts = function() { var html = '
'; for (var i = 0; i < EOL.contactPicker.filteredContacts.length; i++) { var name = EOL.contactPicker.filteredContacts[i].name; var email = EOL.contactPicker.filteredContacts[i].email; var isChecked = EOL.contactPicker.isChecked(email); html += '
' + '
' + '' + '
' + '
'+ EOL.contactPicker.truncate(name, 22) +'
' + '
'+ (name!=email ? EOL.contactPicker.truncate(email, 29): '') +'
' + '
' + '
' + '
'; } html+= '
'; $('import-results').innerHTML = html; $('import-results-list').setStyle('opacity', 0 ); var contactsFx = new Fx.Tween('import-results-list'); contactsFx.start('opacity', 0, 1); } EOL.contactPicker.truncate = function(str, length) { if (str.length > length) return str.substring(0,length)+'...'; else return str; } EOL.contactPicker.handleCheckboxClick = function(chkBox) { for(var i=0; i< EOL.contactPicker.contacts.length ;i++) { if(chkBox.value == EOL.contactPicker.contacts[i].email) { if(chkBox.checked) EOL.contactPicker.contacts[i].checked = true; else EOL.contactPicker.contacts[i].checked = false; break; } } EOL.contactPicker.updateSelectedCount(); } EOL.contactPicker.updateSelectedCount = function() { var selected = EOL.contactPicker.getAllSelected(); var count = selected.length; $('selected_count').value = count; if(count>0) { $('select_button').setStyle('display', 'block'); $('select_button_grey').setStyle('display', 'none'); $('select_button_copy').innerHTML = 'Select '+ count + ' Friend(s)'; } else { $('select_button').setStyle('display', 'none'); $('select_button_grey').setStyle('display', 'block'); } var remainingCount = 100 - count; var text = remainingCount + ' Email(s)'; var color = ''; if(remainingCount < 0) { //text = "-" +(count - 100 )+ ' Email(s)'; color = "#FF0000"; $('contactPickerError').setStyle('display', ''); } else { //text = count + ' Email(s)'; color = "#50852C"; $('contactPickerError').setStyle('display', 'none'); } $('selected_emails_text').innerHTML = text; $('selected_emails_text').setStyle('color', color); } EOL.contactPicker.getAllSelected = function() { var selected = new Array(); var j=0; for(var i=0; i< EOL.contactPicker.contacts.length ;i++) { if(EOL.contactPicker.contacts[i].checked === true) { selected[j++] = EOL.contactPicker.contacts[i].email; } } return selected; } EOL.contactPicker.closeForm = function() { // alert('closeform called'); EOL.emailFriend.bringBackTemporary(); EOL.contactPicker.dialog.hide(); } EOL.contactPicker.submitForm = function() { // alert('submitform called'); // append the selected contacts in cookie var selectedList = EOL.contactPicker.getAllSelected(); Cookie.write('emailAddresses', (Cookie.read('emailAddresses')? Cookie.read('emailAddresses') + ', ':'') + selectedList.join(', ')); var newImports = selectedList.length; EOL.emailFriend.bringBackTemporary(newImports); EOL.contactPicker.dialog.hide(); } // CONTACT PICKER GOOGLE RELATED FUNCTIIONS EOL.contactPicker.handleNextGoogleAction = function() { EOL.emailFriend.closeTemporary(); EOL.contactPicker.showLoading('google'); // show loading interaction EOL.contactPicker.getContacts('google'); } EOL.contactPicker.contacts = new Array(); EOL.contactPicker.filteredContacts = new Array(); EOL.contactPicker.getContacts = function(platform) { // render ahr request var action = 'contactslist'; var postData = 'action='+ action +'&platform='+ platform ; var request = new Request({ url: '/php/framework/main/contactPicker.php?t=' + getDateTime(), method: 'post', data: postData, onSuccess: function(obj) { var res = eval('(' + obj + ')'); if(res.status == 'error') { // handle error } else { if(res.data.contactsCount > 0) { // set all contacts variable EOL.contactPicker.contacts = res.data.contactsList; //Initialize filtered list with all contacts EOL.contactPicker.resetContactsList(); EOL.contactPicker.renderContacts(); $('total_imported').value = res.data.contactsCount; $('platform').value = platform; // show additional data on dialog regarding dontacts $('selected_emails_text').setStyle('display', ''); $('contactsFoundTitle').setStyle('display', ''); $('contactsFoundTitle').innerHTML = 'We found '+ res.data.contactsCount +' contacts. Select ones to invite, up to 100 at a time.'; return; } else if(res.data.contactsCount == 0 ) { error = "No contacts found. You can still invite contacts from other email accounts, or simply type-in their email addresses."; } else { error = "There was an error processing your request. Please try again."; } EOL.contactPicker.closeForm(); EOL.emailFriend.showError(error); } }, onFailure: function() { //EOL.contactPicker.loading.hide(); EOL.emailFriend.bringBackTemporary(); EOL.emailFriend.showError("There was an error processing your request. Please try again."); } }).send(); // This is where ir should reset session too... } // CONTACT PICKER YAHOO RELATED FUNCTIONS EOL.contactPicker.handleNextYahooAction = function() { EOL.emailFriend.closeTemporary(); // show loading icon EOL.contactPicker.showLoading('yahoo'); // get yahoo access token and store in mongodb. On success the function calls EOL.contactPicker.getContacts('yahoo'); to render contacts/ EOL.oauth.yahoo.getYahooAccessToken(); // no need to explicitly call the getContacts here. //EOL.contactPicker.getContacts('yahoo'); } // CONTACT PICKER HOTMAIL RELATED FUNCTIONS EOL.contactPicker.handleNextHotmailAction = function() { EOL.emailFriend.closeTemporary(); EOL.contactPicker.showLoading('hotmail'); // show loading interaction EOL.contactPicker.getContacts('hotmail'); } EOL.namespace('referral'); EOL.referral.share_type = function(url) { /* see php/marketing/modules/ShareUtil.php */ var pageUTMMap = new Object(); pageUTMMap.profile="share_profile"; pageUTMMap.new_profile="share_new_profile"; pageUTMMap.port_item="share_portfolio_item"; pageUTMMap.port_search="share_portfolio_item_from_search"; pageUTMMap.job_post_confirm="share_job_posted"; //pageUTMMap.proposal_list="share_proposal_list"; pageUTMMap.elance_job="share_elance_job"; pageUTMMap.buyer_left_fb="share_buyer_left_fb"; pageUTMMap.fb_received="share_feedback_received"; pageUTMMap.bid_sub="share_bid_sub"; pageUTMMap.skills_test="share_skill_pass"; pageUTMMap.job_accept="share_job_accept"; pageUTMMap.landing="landing"; /* not in php/marketing/modules/ShareUtil.php */ pageUTMMap.referralprogram="referralprogram"; //pageUTMMap.modefeedback="mode=feedback"; for (var key in pageUTMMap) { var str = pageUTMMap[key]; var exp_str = str.replace(/_/g, "\\_"); var exp = exp_str; var regex = new RegExp(exp,"gi"); if ( url.match(regex) || document.URL.match(regex) ){ return str; } } var exp = /mode=feedback/gi; var regex = new RegExp(exp); if ( url.match(regex) || document.URL.match(regex) ){ return "feedback"; } exp = /proposal/gi; regex = new RegExp(exp); if ( url.match(regex) || document.URL.match(regex) ){ return "share_proposal_list"; } return false; } EOL.referral.click_track = function(share_type,share_name,page_code) { new Request({ url: '/php/referral/main/trackShareLinkClicks.php', method: 'post', data: { share_type: share_type, share_name: share_name, page_code: share_type } }).send(); } EOL.referral.share_facebook = function(url, page_code) { var share_type; share_type = EOL.referral.share_type(url); if(share_type!=false){ EOL.referral.click_track(share_type,'facebook',page_code); } if (!page_code) { EOL.referral.share_popup(url, 650, 350, 'fbshare'); return false; } FB.ui({ method: 'feed', display: 'popup', link: url }, function(e) { if (!e) return; EOL.referral.facebook_event(page_code); }); return false; } EOL.referral.share_twitter = function(url,page_code) { var share_type; share_type = EOL.referral.share_type(url); if(share_type==false) return; EOL.referral.click_track(share_type,'twitter',page_code); return; } EOL.referral.share_google = function(url,page_code) { var share_type; share_type = EOL.referral.share_type(url); if(share_type!=false){ EOL.referral.click_track(share_type,'google',page_code); } var gplus_url = 'https://plus.google.com/share?url='+url; EOL.referral.share_popup(gplus_url, 680, 490,'gplus'); return false; } EOL.referral.share_popup = function(url, w, h, name) { var x = Math.round(screen.width/2 - w/2); var y = 0; if (screen.height > h) { y = Math.round(screen.height/2 - h/2); } window.open(url, name, 'scrollbars=yes,resizable=yes,toolbar=no,location=yes,width='+w+',height='+h+',left='+x+',top='+y); } EOL.referral.share_email = function(url, msg, objType, objId, isRef, page_code) { var share_type; share_type = EOL.referral.share_type(url); if(share_type!=false){ EOL.referral.click_track(share_type,'email',page_code); } EOL.emailFriend.open(objId, url, objType, msg, true, isRef, page_code); return false; } EOL.referral.focus_email = function(el) { el = $(el); if (!el.hasClass('share-email-dirty')) { var val = el.get('value'); el.set('noval', val).set('value', '').addClass('share-email-dirty'); } } EOL.referral.blur_email = function(el) { el = $(el); if (el.hasClass('share-email-dirty') && !el.get('value').length) { el.set('value', el.get('noval')).removeClass('share-email-dirty'); } } EOL.referral.send_email = function() { EOL.referral.focus_email('recipient_list'); EOL.emailFriend.submit(); EOL.referral.blur_email('recipient_list'); return false; } EOL.referral.share_link = function() { var content = '
'; EOL.referral.share_link_dlg = new EOL.dialog(content, { position: 'scroll', modal: true, width: 358, close: false}); EOL.referral.share_link_dlg.show(); new Request({ url: '/php/referral/main/shareLinkHTML.php', method: 'get', onSuccess: function(req) { $('share-dlg').removeClass('loading').set('html', req); if ($('profileUrl')) { $('profileUrl').onclick = $('profileUrl').onfocus = $('profileUrl').onkeydown = $('profileUrl').onkeyup = EOL.referral.selectAll; if ($('copyProfile')) { EOL.referral.clipProfile = new ZeroClipboard.Client(); EOL.referral.clipProfile.setText($('profileUrl').get('value')); EOL.referral.clipProfile.glue('copyProfile', EOL.referral.share_link_dlg.containerEl); } } if ($('elanceUrl')) { $('elanceUrl').onclick = $('elanceUrl').onfocus = $('elanceUrl').onkeydown = $('elanceUrl').onkeyup = EOL.referral.selectAll; if ($('copyElance')) { EOL.referral.clipElance = new ZeroClipboard.Client(); EOL.referral.clipElance.setText($('elanceUrl').get('value')); EOL.referral.clipElance.glue('copyElance', EOL.referral.share_link_dlg.containerEl); } } }, onFailure: function() {} }).send(); return false; } EOL.referral.share_link_close = function() { if (EOL.referral.share_link_dlg) { EOL.referral.share_link_dlg.hide(); if (EOL.referral.clipProfile) { EOL.referral.clipProfile.destroy(); } if (EOL.referral.clipElance) { EOL.referral.clipElance.destroy(); } } return false; } EOL.referral.selectAll = function() { if (this.setSelectionRange) { this.setSelectionRange(0, this.value.length); } else { var range = this.createTextRange(); range.collapse(true); range.moveStart('character', 0); range.moveEnd('character', this.value.length); range.select(); } } EOL.referral.share_menu_init = false; EOL.referral.share_menu = function(ele) { if (!EOL.referral.share_menu_init) { $(document).addEvent('click', function(e) { if (e.target.hasClass('share_dropdown')) return; $$('.share_dropmenu').addClass('displayNone'); }); EOL.referral.share_menu_init = true; } if ($(ele)) $(ele).toggleClass('displayNone'); return false; } EOL.referral.facebook_event = function(page_code, e) { if (e) { page_code = $(e.dom).get('page_code'); } new Request({ url: '/php/referral/main/trackSharesAHR.php', method: 'post', data: { page: page_code, platform: 'facebook' } }).send(); } EOL.referral.bindFacebook = function() { if (!window.FB) { setTimeout(EOL.referral.bindFacebook, 100); return; } FB.Event.subscribe('edge.create', EOL.referral.facebook_event); } EOL.referral.tweet_event = function(e) { if (!e || !e.target) return; var page_code = $(e.target).get('page_code'); if (!page_code) return; new Request({ url: '/php/referral/main/trackSharesAHR.php', method: 'post', data: { page: page_code, platform: 'twitter' } }).send(); } EOL.referral.bindTwitter = function() { if (!window.twttr) { setTimeout(EOL.referral.bindTwitter, 100); return; } twttr.events.bind('tweet', EOL.referral.tweet_event); } window.fbAsyncInit = function() { if (!$('fb-appid')) return; FB.init({ appId: $('fb-appid').get('text'), xfbml: true }); } EOL.referral.loadedTwitter = false; EOL.referral.loadedFacebook = false; EOL.referral.boundEvents = false; $(window).addEvent('load', function() { // load twitter js if ($('tweetButton') && !window.twttr && !EOL.referral.loadedTwitter) { EOL.referral.loadedTwitter = true; var js = document.createElement('script'); js.type = 'text/javascript'; js.src = document.location.protocol + '//platform.twitter.com/widgets.js'; js.async = true; var s = document.getElementsByTagName('head')[0]; s.appendChild(js); } // load facebook js if (!window.FB && !EOL.referral.loadedFacebook) { EOL.referral.loadedFacebook = true; js = document.createElement('script'); js.type = 'text/javascript'; js.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; if (!$('fb-root')) { $(document.body).grab(new Element('div', {id:'fb-root'}), 'top'); } $('fb-root').appendChild(js); } if (EOL.referral.boundEvents) return; // bind twitter events EOL.referral.bindTwitter(); // bind facebook like events EOL.referral.bindFacebook(); EOL.referral.boundEvents = true; }); /* --- script: Request.JSONP.js name: Request.JSONP description: Defines Request.JSONP, a class for cross domain javascript via script injection. license: MIT-style license authors: - Aaron Newton - Guillermo Rauch - Arian Stolwijk requires: - Core/Element - Core/Request - MooTools.More provides: [Request.JSONP] ... */ Request.JSONP = new Class({ Implements: [Chain, Events, Options], options: {/* onRequest: function(src, scriptElement){}, onComplete: function(data){}, onSuccess: function(data){}, onCancel: function(){}, onTimeout: function(){}, onError: function(){}, */ onRequest: function(src){ if (this.options.log && window.console && console.log){ console.log('JSONP retrieving script with url:' + src); } }, onError: function(src){ if (this.options.log && window.console && console.warn){ console.warn('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs'); } }, url: '', callbackKey: 'callback', injectScript: document.head, data: '', link: 'ignore', timeout: 0, log: false }, initialize: function(options){ this.setOptions(options); }, send: function(options){ if (!Request.prototype.check.call(this, options)) return this; this.running = true; var type = typeOf(options); if (type == 'string' || type == 'element') options = {data: options}; options = Object.merge(this.options, options || {}); var data = options.data; switch (typeOf(data)){ case 'element': data = document.id(data).toQueryString(); break; case 'object': case 'hash': data = Object.toQueryString(data); } var index = this.index = Request.JSONP.counter++; var src = options.url + (options.url.test('\\?') ? '&' :'?') + (options.callbackKey) + '=Request.JSONP.request_map.request_'+ index + (data ? '&' + data : ''); if (src.length > 2083) this.fireEvent('error', src); Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, index); }.bind(this); var script = this.getScript(src).inject(options.injectScript); this.fireEvent('request', [src, script]); if (options.timeout) this.timeout.delay(options.timeout, this); return this; }, getScript: function(src){ if (!this.script) this.script = new Element('script', { type: 'text/javascript', async: true, src: src }); return this.script; }, success: function(args, index){ if (!this.running) return; this.clear() .fireEvent('complete', args).fireEvent('success', args) .callChain(); }, cancel: function(){ if (this.running) this.clear().fireEvent('cancel'); return this; }, isRunning: function(){ return !!this.running; }, clear: function(){ this.running = false; if (this.script){ this.script.destroy(); this.script = null; } return this; }, timeout: function(){ if (this.running){ this.running = false; this.fireEvent('timeout', [this.script.get('src'), this.script]).fireEvent('failure').cancel(); } return this; } }); Request.JSONP.counter = 0; Request.JSONP.request_map = {}; EOL.namespace('popups'); EOL.popups.dialog = null; EOL.popups.open = function(url, callback) { var loading = ''; EOL.popups.dialog = new EOL.dialog(loading, { position: 'fixed' }); EOL.popups.dialog.show(); new Request.JSONP({ url: url, method: 'GET', data: { t: new Date().getTime() }, onSuccess: function(r) { EOL.popups.dialog.update(r.html); if (callback) callback(r.html); } }).send(); return false; } EOL.popups.invite = function(url, redirect) { EOL.popups.invite.redirect = redirect; EOL.popups.open(url, function(r) { if ($('popup-invite-opt-elance')) { EOL.popups.invite.selectPage($('popup-invite-opt-elance').set('checked', true)); EOL.popups.invite.selectTab($$('.popup-invite-tab[rel=other]')[0]); $('popup-invite-message').onchange(); EOL.popups.invite.limit = $('elance-invite-limit').get('text'); EOL.popups.invite.updateInviteCount(0); // reinitialize vars EOL.popups.invite.inviteList = null; EOL.popups.invite.checkRequests = {}; } }); return false; } EOL.popups.featuredUpsellMaxInvitesReached = function(jobId) { EOL.featuredUpsell.showMaxInvitesReachedModal(jobId); return false; } EOL.popups.featuredUpsellGeneric = function(jobId) { EOL.featuredUpsell.showGenericFeaturedModal(jobId); } EOL.popups.featuredUpsellRelistFeaturedJob = function(jobId) { var modal = new EOL.featuredUpsell.relistFeaturedJobModal({ 'jobId':jobId, 'onRelistSuccess':function(response){ if (response.data.hasReachedRelistLimit){ $$('#jobActionsDropDown .action_relist').addClass('displayNone'); } //show confirmation message if (!EOL.popups.relistMessage) { EOL.popups.relistMessage = EOL.utility.createConfirmMessage({ 'subheaderContent':'Your job has been relisted.' }); EOL.popups.relistMessage.inject($$('.proposal-page-container')[0], 'top'); } else { EOL.popups.relistMessage.show(); } modal.hide(); var postedInfo = $('proposal-info-details').getElements('.proposal-spr-posted span.smart-info-container'); if (postedInfo && postedInfo[0]) { postedInfo[0].set('text','Relisted: Just Now'); } var timeLeftInfo = $('proposal-info-items').getElements('.proposal-spr-timeleft span.smart-info-container'); if (timeLeftInfo && timeLeftInfo[0]) { timeLeftInfo[0].set('text','Time Left: '+response.data.timeLeft); } } }); modal.open(); } EOL.popups.featuredUpsellRelistAsFeatured = function(jobId) { EOL.featuredUpsell.showRelistAsFeaturedModal(jobId); } EOL.popups.decline = function(url) { return EOL.popups.open(url); } EOL.popups.award = function(url) { /** * ugly hack, but a refactor of EOL.dialog is needed to avoid it * see https://jira.elance.com/browse/EOL-48816?focusedCommentId=205685&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-205685 */ if (EOL.jobTeam && EOL.jobTeam.addToTeamDialogShown){ return false; } return EOL.popups.open(url, function(){ //prebid fixed price date control if ($('award-msDate')){ new Picker.Date($('award-msDate'), { positionOffset: {x: -5, y: 5}, pickerClass: 'datepicker_elance', toggle: $('award-msDate-calendar'), format: "%m/%d/%Y", startDay: 0, onSelect: function(dateVal){ EOL.popups.award.prebidCheck(dateVal, 'award-msDate'); } }); } //previous terms fixed price date controls var i=0; while ($('award-msDate_'+i)){ new Picker.Date($('award-msDate_'+i), { positionOffset: {x: -5, y: 5}, pickerClass: 'datepicker_elance', toggle: $('award-msDate-calendar_'+i), format: "%m/%d/%Y", startDay: 0 }); i++; } //previous terms hourly date control if ($('award-endDate')){ new Picker.Date($('award-endDate'), { positionOffset: {x: -5, y: 5}, pickerClass: 'datepicker_elance', toggle: $('award-endDate-calendar'), format: "%m/%d/%Y", startDay: 0, minDate: new Date(), onSelect: EOL.popups.award.updateDuration }); //for previous terms, calculate duration EOL.popups.award.updateDuration(new Date($('award-endDate').value), 'award-terms-form'); } if ($('award-prebid-form')){ if (!$('award-reuse-terms') || !$('award-reuse-terms').checked){ EOL.popups.disable('award-prebid-buttons'); } $$('.award-prebid-input').each(function(item){ item.addEvent('keyup', EOL.popups.award.prebidCheck); }); } if ($('award-reuse-terms')){ EOL.popups.award.switchTerms($('award-reuse-terms').checked); } }); }; EOL.popups.award.prebidCheck = function(dateVal, dateFieldId) { //if called from calendar, update date input if (dateVal instanceof Date && $(dateFieldId)) { $(dateFieldId).removeClass("popup-input-default"); } var entered = true; $$('.award-prebid-input').each(function(item){ if (!item.value || item.hasClass("popup-input-default")){ entered = false; } }); if (entered){ if ($('award-terms-link').hasClass('displayNone')) EOL.popups.enable('award-prebid-buttons'); }else{ if (!$('award-terms-link').hasClass('displayNone')) EOL.popups.disable('award-prebid-buttons'); } }; EOL.popups.award.updateDuration = function(endDate, formId){ if (!formId){ formId = ($('award-previous-terms').hasClass('displayNone')) ? 'award-prebid-form' : 'award-terms-form'; } if (!$(formId)){ return; } var startDate = new Date(); var startTs = startDate.getTime(); var endTs = endDate.getTime(); var duration = Math.max(1, Math.ceil((endTs - startTs)/(1000*60*60*24)));//difference in days, minimum 1 day var weeks = Math.floor(duration/7); var days = duration%7; if (weeks > 0){ $(formId).getElementById('award-duration-weeksNumber').innerHTML = weeks; if (weeks == 1){ $(formId).getElementById('award-duration-week').removeClass('displayNone'); $(formId).getElementById('award-duration-weeks').addClass('displayNone'); }else{ $(formId).getElementById('award-duration-week').addClass('displayNone'); $(formId).getElementById('award-duration-weeks').removeClass('displayNone'); } $(formId).getElementById('award-duration-weeksNote').removeClass('displayNone'); }else{ $(formId).getElementById('award-duration-weeksNote').addClass('displayNone'); } if (days > 0 || weeks == 0){//if there are 0 weeks and 0 days, show "0 days" $(formId).getElementById('award-duration-daysNumber').innerHTML = days; if (days == 1){ $(formId).getElementById('award-duration-day').removeClass('displayNone'); $(formId).getElementById('award-duration-days').addClass('displayNone'); }else{ $(formId).getElementById('award-duration-day').addClass('displayNone'); $(formId).getElementById('award-duration-days').removeClass('displayNone'); } $(formId).getElementById('award-duration-daysNote').removeClass('displayNone'); }else{ $(formId).getElementById('award-duration-daysNote').addClass('displayNone'); } $(formId).getElement('div.award-field-note').removeClass('displayNone'); }; EOL.popups.cancel = function(url) { EOL.popups.open(url, function(r) { $('popup-cancel-comments').onchange(); }); return false; } EOL.popups.extend = function(url) { EOL.popups.open(url, function(r) { var minDate = $('popup-extend-min').get('value'); var maxDate = $('popup-extend-max').get('value'); var cal = new Picker.Date($('popup-extend-until'), { minDate: Date.parse(minDate), maxDate: Date.parse(maxDate), positionOffset: {x: -5, y: 5}, pickerClass: 'datepicker_elance', toggle: $('popup-extend-calendar'), startDay: 0, format: "%b %e, %Y" }); $('popup-extend-reason').onchange(); }); return false; } EOL.popups.closeJob = function(url) { EOL.popups.open(url, function(r) { $('popup-close-reason').onchange(); }); return false; } EOL.popups.repost = function(url) { EOL.popups.open(url, function(r) { var reason = $('popup-repost-close-reason'); if (reason) reason.onchange(); }); return false; } EOL.popups.close = function() { if (EOL.popups.confirmDialog) { EOL.popups.confirmDialog.hide(); EOL.popups.confirmDialog = null; } if (EOL.popups.dialog) { EOL.popups.dialog.hide(); } return false; } EOL.popups.invite.inviteList = null; EOL.popups.invite.checkRequests = {}; EOL.popups.invite.initInviteElance = function() { var area = $('invite-elance-area'); if (!area) return; if (area.hasClass('popup-input-default')) { area.set('value', '') .removeClass('popup-input-default'); } if($('invite-elance-area-placeholder')) $('invite-elance-area-placeholder').addClass('displayNone'); if (EOL.popups.invite.inviteList){ EOL.popups.invite.inviteList.container.show(); EOL.popups.invite.inviteList.focusLast(); return; // already initialized } var suggestUrl = $('invite-suggest-url'); if (!suggestUrl) return; suggestUrl = suggestUrl.get('value').trim(); if (!suggestUrl.length) return; var checkUrl = $('invite-check-url'); if (!checkUrl) return; checkUrl = checkUrl.get('value').trim(); if (!checkUrl.length) return; EOL.popups.invite.inviteList = new TextboxList('invite-elance-area', { max: Math.min(EOL.popups.invite.limit, 50), unique: true, startEditableBit: false, inBetweenEditableBits: false, plugins: { autocomplete: { queryRemote: true, placeholder: '', remote: {url: suggestUrl} } }, bitsOptions: { editable: { addOnBlur: false } }, onBitBoxAdd: function(box) { if (box.value[0] == null) { box.value[0] = box.value[1]; box.value[2] = '' + box.value[1] + ''; box.update(box.value); box.bit.addClass('textboxlist-bit-box-pending'); } if (box.value && box.bit.hasClass('textboxlist-bit-box-pending')) { var s = box.value[0]; if (EOL.popups.invite.checkRequests[s]) { EOL.popups.invite.checkRequests[s].cancel(); } EOL.popups.invite.checkRequests[s] = new Request.JSON({ url: checkUrl, method: 'POST', data: { search: s }, onComplete: function() { EOL.popups.invite.checkRequests[s] = null; }, onSuccess: function(r) { if (r.status == 'success') { box.update(r.data); box.bit.removeClass('textboxlist-bit-box-pending'); } else { box.bit.addClass('textboxlist-bit-box-error'); $('invite-elance-nouser').removeClass('displayNone'); } } }).send(); } EOL.popups.invite.updateInviteCount(EOL.popups.invite.inviteList.getValues().length); }, onBitBoxRemove: function(box) { if (box.value) { var s = box.value[0]; if (EOL.popups.invite.checkRequests[s]) { EOL.popups.invite.checkRequests[s].cancel(); } } if ($$('.textboxlist-bit-box-error').length < 1) { $('invite-elance-nouser').addClass('displayNone'); } EOL.popups.invite.updateInviteCount(EOL.popups.invite.inviteList.getValues().length); }, onBitEditableFocus: function(editable) { if (editable.textboxlist.getValues().length >= editable.textboxlist.options.max) { editable.blur(); } }, onBitBlur: function(box){ if(!EOL.popups.invite.inviteList.getValues().length){ if($('invite-elance-area-placeholder')) $('invite-elance-area-placeholder').removeClass('displayNone'); EOL.popups.invite.inviteList.container.hide(); } } }); //if (EOL.popups.invite.limit > 0) { EOL.popups.invite.inviteList.focusLast(); //} } EOL.popups.invite.updateInviteCount = function(num) { var div = $('elance-invite-limit'); if (!div) return; var left = Math.min(EOL.popups.invite.limit, 50) - num; var leftReal = EOL.popups.invite.limit - num; div.set('text', leftReal); $('invite-elance-limit').toggleClass('popup-limit-reached', leftReal < 1); if (left < 1 && EOL.popups.invite.inviteList) { EOL.popups.invite.inviteList.blur(); } } EOL.popups.invite.selectTab = function(ele) { ele = $(ele); ele.getSiblings('.popup-invite-tab').removeClass('popup-invite-tab-selected'); ele.addClass('popup-invite-tab-selected'); var page = $('popup-invite-' + ele.get('rel')); if (!page) return false; $$('.popup-invite-page').addClass('displayNone'); page.removeClass('displayNone'); return false; } EOL.popups.invite.selectPage = function(ele) { ele = $(ele); if (!ele.get('checked')) return; var page = $('popup-invite-' + ele.get('rel')); if (!page) return; $$('.popup-invite-subpage').addClass('displayNone'); page.removeClass('displayNone'); } EOL.popups.invite.sendEmail = function(jobid, url) { var emailInput = $('popup-invite-email'); if (!emailInput) return false; var msgInput = $('popup-invite-message'); if (!msgInput) return false; var data = { type: 'email', message: msgInput.get('value'), emails: emailInput.get('value') }; var copyInput = $('popup-email-copy'); if (copyInput && copyInput.get('checked')) { data.copy = true; } EOL.popups.invite.send(url, data, 'popup-invite-error'); return false; } EOL.popups.invite.sendElance = function(jobid, url) { var usersInput = $('invite-elance-area'); if (!usersInput) return false; var last = EOL.popups.invite.inviteList.getBit(EOL.popups.invite.inviteList.list.getLast()); if (last && last.type == 'editable') { last.toBox(); } var users = usersInput.hasClass('popup-input-default') ? '' : usersInput.get('value'); var data = { type: 'elance', users: users }; EOL.popups.invite.send(url, data, 'invite-elance-error'); return false; } EOL.popups.confirmDialog = null; EOL.popups.invite.send = function(url, data, errorDiv) { $(errorDiv).addClass('displayNone'); EOL.popups.disable('popup-invite-other'); new Request.JSON({ url: url, method: 'POST', data: data, onComplete: function() { EOL.popups.enable('popup-invite-other'); }, onFailure: function() { $(errorDiv).set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.html) { EOL.popups.confirmDialog = new EOL.dialog(r.html, { afterShow: function() { var isOk = $('popup-invite-confirm-ok'); if (isOk) isOk = isOk.get('value'); EOL.popups.confirmDialog.isOk = isOk; }, afterHide: function() { if (!this.goBack) { if (EOL.popups.confirmDialog.isOk && EOL.popups.invite.redirect) { window.location.href = EOL.popups.invite.redirect; } else { EOL.popups.close(); } } } }); $(EOL.popups.dialog.containerEl).addClass('displayNone'); EOL.popups.confirmDialog.show(); } else if (!r.error) { r.error = 'Unknown error. Please try again later.'; } if (r.error) { $(errorDiv).set('html', r.error).removeClass('displayNone'); } } }).send(); } EOL.popups.invite.back = function() { EOL.popups.confirmDialog.goBack = true; EOL.popups.confirmDialog.hide(); EOL.popups.confirmDialog.goBack = false; $(EOL.popups.dialog.containerEl).removeClass('displayNone'); return false; } EOL.popups.decline.reasonChanged = function(ele, other) { var o = $('popup-decline-other-div'); if (o) { var val = $(ele).get('value'); o.toggleClass('displayNone', val != other); } } EOL.popups.decline.submit = function(url, bidid, tab) { var reason = $('popup-decline-reason'); if (!reason) return; reason = reason.get('value'); var other = $('popup-decline-other'); other = other ? other.get('value') : ''; $('popup-decline-error').addClass('displayNone'); EOL.popups.disable('popup-decline'); new Request.JSON({ url: url, method: 'POST', data: { reason: reason, other: other }, onComplete: function() { EOL.popups.enable('popup-decline'); }, onFailure: function() { $('popup-decline-error').set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.status == 'success') { EOL.popups.close(); EOL.proposals.removeBidCard(bidid, 'declined'); } else { if (!r.error) { r.error = 'Unknown error. Please try again later.'; } $('popup-decline-error').set('html', r.error).removeClass('displayNone'); } } }).send(); return false; }; EOL.popups.award.switchTerms = function(showPrev){ if (showPrev){ $('award-bid-terms').addClass('displayNone'); $('award-previous-terms').removeClass('displayNone'); if ($('award-prebid-form')){ if ($('award-terms-link').hasClass('displayNone')) EOL.popups.enable('award-prebid-buttons'); } }else{ $('award-previous-terms').addClass('displayNone'); $('award-bid-terms').removeClass('displayNone'); if ($('award-prebid-form')){ EOL.popups.award.prebidCheck(); } } }; EOL.popups.award.updateTermsUrl = function(){ var url = $('award-terms-url').innerHTML; if ($('award-reuse-terms') && $('award-reuse-terms').checked){ url += '&'+$('award-terms-form').toQueryString(); url += '&prevTerms=1'; } else if ($('award-prebid-form')){ url += '&'+$('award-prebid-form').toQueryString(); } if ($('award-keep-open') && $('award-keep-open').checked){ url += '&keepOpen=Y'; }else{ url += '&keepOpen=N'; } $('award-terms-link').href = url; }; EOL.popups.award.submit = function(url) { var data = ''; var keepOpen = $('award-keep-open'); if (keepOpen && keepOpen.get('checked')) { data += '&keepOpen=1'; } var reuseTerms = $('award-reuse-terms'); if (reuseTerms && reuseTerms.get('checked')) { data += '&reuseTerms=1'; if ($('award-terms-form')){ data += '&'+$('award-terms-form').toQueryString(); } }else if($('award-prebid-form')){ data += '&'+$('award-prebid-form').toQueryString(); } $('popup-award-error').addClass('displayNone'); EOL.popups.disable('popup-award'); if (typeof(ioGetBlackbox) == "function") { var bb_data = ioGetBlackbox(); if (bb_data.finished) { data += '&ioBB=' + bb_data.blackbox; } } new Request.JSON({ url: url, method: 'POST', data: data, onComplete: function() { EOL.popups.enable('popup-award'); }, onFailure: function() { $('popup-award-error').set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.status == 'success') { window.location.href = r.redirect; } else { if (!r.error) { r.error = 'Unknown error. Please try again later.'; } $('popup-award-error').set('html', r.error).removeClass('displayNone'); } } }).send(); return false; } EOL.popups.preaward = new Object(); EOL.popups.preaward.submit = function(postUrl, getUrl) { var data = $('preaward-terms-form').toQueryString(); $('popup-preaward-error').addClass('displayNone'); EOL.popups.disable('popup-preaward'); new Request.JSON({ url: postUrl, method: 'POST', data: data, onComplete: function() { EOL.popups.enable('popup-preaward'); }, onFailure: function() { $('popup-preaward-error').set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.status == 'success') { EOL.popups.close(); EOL.popups.award(getUrl); } else { if (!r.error) { r.error = 'Unknown error. Please try again later.'; } $('popup-preaward-error').set('html', r.error).removeClass('displayNone'); } } }).send(); return false; }; EOL.popups.preaward.poSelectChanged = function() { var newPo = $('new-po-box'); if ($('po-select').get('value') == '+') { newPo.removeClass('displayNone'); } else { if (!newPo.hasClass('displayNone')) { newPo.addClass('displayNone'); } } }; EOL.popups.preaward.newPoFocus = function(el) { var value = $(el).get('value'); var dummyText = $(el).get('data-dummy-text'); if (value == dummyText) { $(el).set('value', ''); $(el).removeClass('dummy-text'); } }; EOL.popups.preaward.newPoBlur = function(el) { var value = $(el).get('value'); var dummyText = $(el).get('data-dummy-text'); if (value == '') { $(el).set('value', dummyText); if (!$(el).hasClass('dummy-text')) { $(el).addClass('dummy-text'); } } }; EOL.popups.cancel.reasonChange = function(ele, other) { var val = ''; if (ele.get('value') == other) { val = $('popup-cancel-required').get('value'); } else { val = $('popup-cancel-optional').get('value'); } var txt = $('popup-cancel-comments'); if (txt.hasClass('popup-input-default')) { txt.set('value', val); } else { txt.store('default', val); } } EOL.popups.cancel.submit = function(url,jobid) { var reason = $('popup-cancel-reason'); if (!reason) return false; reason = reason.get('value'); var comments = $('popup-cancel-comments'); if (!comments) return false; if (comments.hasClass('popup-input-default')) { comments = ''; } else { comments = comments.get('value'); } $('popup-cancel-error').addClass('displayNone'); EOL.popups.disable('popup-cancel'); new Request.JSON({ url: url, method: 'POST', data: { reason: reason, comments: comments }, onFailure: function() { EOL.popups.enable('popup-cancel'); $('popup-cancel-error').set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.status == 'success') { if(EOL.myjobs) { window.location.href = '?confirmMode=cancelJob&jobid='+jobid; } else window.location.href = '?confirm=cancel'; } else { EOL.popups.enable('popup-cancel'); if (!r.error) { r.error = 'Unknown error. Please try again later.'; } $('popup-cancel-error').set('html', r.error).removeClass('displayNone'); } } }).send(); return false; } EOL.popups.extend.submit = function(url) { var reason = $('popup-extend-reason'); reason = reason ? reason.get('value') : ''; var until = $('popup-extend-until'); if (!until) return; until = until.get('value'); $('popup-extend-error').addClass('displayNone'); EOL.popups.disable('popup-extend'); new Request.JSON({ url: url, method: 'POST', data: { reason: reason, until: until }, onFailure: function() { EOL.popups.enable('popup-extend'); $('popup-extend-error').set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.status == 'success') { if (EOL.myjobs) { window.location.href = '?confirmMode=extendJob&date='+until; } else window.location.href = '?confirm=extend'; } else { EOL.popups.enable('popup-extend'); if (!r.error) { r.error = 'Unknown error. Please try again later.'; } $('popup-extend-error').set('html', r.error).removeClass('displayNone'); } } }).send(); return false; } EOL.popups.closeJob.submit = function(url, popup, reason, error, redirect) { if (!reason) reason = 'popup-close-reason'; reason = $(reason); if (!reason) return; if (reason.hasClass('popup-input-default')) { reason = ''; } else { reason = reason.get('value'); } if (!error) error = 'popup-close-error'; $(error).addClass('displayNone'); if (!popup) popup = 'popup-close'; EOL.popups.disable(popup); new Request.JSON({ url: url, method: 'POST', data: { reason: reason }, onFailure: function() { EOL.popups.enable(popup); $(error).set('text', 'Unknown error. Please try again later.').removeClass('displayNone'); }, onSuccess: function(r) { if (r.status == 'success') { if(EOL.myjobs && !redirect) { redirect = '?confirmMode=closeJob'; } else if (!redirect) { redirect = '?confirm=close'; } window.location.href = redirect; } else { EOL.popups.enable(popup); if (!r.error) { r.error = 'Unknown error. Please try again later.'; } $(error).set('html', r.error).removeClass('displayNone'); } } }).send(); return false; } EOL.popups.repost.submit = function(url, close) { var reinviteInvited = $('popup-repost-re-invited'); if (reinviteInvited && reinviteInvited.get('checked')) { url += '&inviteAutoInvite=true'; } var reinviteBid = $('popup-repost-re-bid'); if (reinviteBid && reinviteBid.get('checked')) { url += '&bidAutoInvite=true'; } var doClose = $('popup-repost-close-yes'); if (doClose && doClose.get('checked')) { EOL.popups.closeJob.submit(close, 'popup-repost', 'popup-repost-close-reason', 'popup-repost-error', url); } else { window.location.href = url; } return false; } EOL.popups.repost.track=function(){ var userId = getCookie("userid"); $el('send', 'useraction', "CLICK", 'Job', { "userId": userId, "pageName": "JobRepost" }); } EOL.popups.paymentBlock = function(url) { return EOL.popups.open(url); } EOL.popups.enable = function(id, disable) { var container = $(id); if (!container) return; container.getElements('.disable-disable').set('disabled', disable); container.getElements('.disable-hide').toggleClass('displayNone', disable); container.getElements('.disable-show').toggleClass('displayNone', !disable); } EOL.popups.disable = function(id) { EOL.popups.enable(id, true); } EOL.popups.handleInputDefault = function(ele, focus) { ele = $(ele); if (focus && !ele.hasClass('popup-input-default')) { return; } if (focus) { ele .store('default', ele.get('value')) .set('value', '') .removeClass('popup-input-default'); } else if (!ele.get('value').trim().length) { ele .set('value', ele.retrieve('default')) .addClass('popup-input-default'); } } EOL.popups.autoCompleteInitiated = false; EOL.popups.autoCompleteList = []; EOL.popups.autoComplete = function() { var matchedList = []; var po = $('new-po-value').value; var poList = EOL.popups.getAutoCompleteList(); for(var i = 0; i < poList.length; i++) { var obj = poList[i]; if (obj.value.indexOf(po) > -1) { matchedList.push(obj); } } EOL.popups.formatHTMLAutoCompleteList(matchedList); }; EOL.popups.getAutoCompleteList = function() { if (!EOL.popups.autoCompleteInitiated) { $('po-autocomplete-list').getChildren('.autocomplete-list-item').each(function(el){ EOL.popups.autoCompleteList.push({ 'id' : el.getElement('.autocomplete-ids').value, 'value' : el.getElement('.autocomplete-values').value, 'description' : el.getElement('.autocomplete-descriptions').value }); }); EOL.popups.autoCompleteInitiated = true; } return EOL.popups.autoCompleteList; }; EOL.popups.formatHTMLAutoCompleteList = function(list) { $('po-autocomplete-ul').empty(); for(var i = 0; i < list.length; i++) { var cloneTemplate = $('autocompleteTemplate'); var template = cloneTemplate.clone().cloneEvents(cloneTemplate); var obj = list[i]; template.set('html', obj.value + ' - ' + obj.description); template.set('poNumberId', obj.id); template.show(); $('po-autocomplete-ul').grab(template); } $('po-autocomplete').show(); }; EOL.popups.selectAutoComplete = function(item) { var id = item.get('poNumberId'); $('po-select').set('value', id); $('new-po-box').addClass('displayNone'); }; EOL.popups.getPODescriptionByValue = function() { var poValue = $('new-po-value').value; var pos = JSON.parse($('pos').value); var readyOnly = false; if ($('continue_po_btn').isDisplayed()) { $('continue_btn').show(); $('continue_po_btn').hide(); } pos.each(function(el){ if (poValue.toLowerCase().trim() == el.value.trim().toLowerCase()) { EOL.popups.preaward.newPoFocus($('new-po-desc')); $('new-po-desc').value = el.description; $('new-po-value').value = el.value; $('continue_btn').hide(); $('continue_po_btn').show(); readyOnly = true; } }); $('new-po-desc').readOnly = readyOnly; }; EOL.popups.saveExistingPOasNew = function(postUrl, getUrl) { var POValue = $('new-po-value').value.trim(); var PODescription = null; var POId = null; var pos = JSON.parse($('pos').value); pos.each(function(el){ if (POValue == el.value) { POId = el.valueId; PODescription = el.description; } }); if (POId) { var opt = new Element('option', {'value': POId, 'text':POValue + ' (' + PODescription + ')'}); $('po-select').grab(opt); $('po-select').value = '' + POId; $('new-po-box').addClass('displayNone'); $('continue_po_btn').hide(); EOL.popups.preaward.submit(postUrl, getUrl); } }; $(window).addEvent('domready', function() { var conf = $('confirmInvite'); if (conf) { EOL.popups.confirmDialog = new EOL.dialog(conf.get('html')); EOL.popups.confirmDialog.show(); } }); // MooTools: the javascript framework. // Load this file's selection again by visiting: http://mootools.net/more/36a3ed486449b42f7f3a64758a74a6e0 // Or build this file again with packager using: packager build More/More More/Chain.Wait More/Date More/Date.Extras More/Number.Format More/String.Extras More/String.QueryString More/URI More/Element.Event.Pseudos More/Element.Measure More/Element.Shortcuts More/Assets /* --- copyrights: - [MooTools](http://mootools.net) licenses: - [MIT License](http://mootools.net/license.txt) ... */ MooTools.More={version:"1.4.0.1",build:"a4244edf2aa97ac8a196fc96082dd35af1abab87"};(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this); return this;}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);}if(this.Element&&Element.implement&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c); if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}})();(function(){var b=function(c){return c!=null; };var a=Object.prototype.hasOwnProperty;Object.extend({getFromPath:function(e,f){if(typeof f=="string"){f=f.split(".");}for(var d=0,c=f.length;d3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)]; },lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"}); (function(){var a=this.Date;var f=a.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(s){a.Methods[s.toLowerCase()]=s; });var p=function(u,t,s){if(t==1){return u;}return u28){return 1;}if(y==0&&s<-2){x=new a(x).decrement("day",u); u=0;}w=new a(x.get("year"),0,1).get("day")||7;if(w>4){t=-7;}}else{w=new a(x.get("year"),0,1).get("day");}t+=x.get("dayofyear");t+=6-u;t+=(7+w-v)%7;return(t/7); },getOrdinal:function(s){return a.getMsg("ordinal",s||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3"); },getGMTOffset:function(){var s=this.get("timezoneOffset");return((s>0)?"-":"+")+p((s.abs()/60).floor(),2)+p(s%60,2);},setAMPM:function(s){s=s.toUpperCase(); var t=this.get("hr");if(t>11&&s=="AM"){return this.decrement("hour",12);}else{if(t<12&&s=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM"; },parse:function(s){this.set("time",a.parse(s));return this;},isValid:function(s){if(!s){s=this;}return typeOf(s)=="date"&&!isNaN(s.valueOf());},format:function(s){if(!this.isValid()){return"invalid date"; }if(!s){s="%x %X";}if(typeof s=="string"){s=g[s.toLowerCase()]||s;}if(typeof s=="function"){return s(this);}var t=this;return s.replace(/%([a-z%])/gi,function(v,u){switch(u){case"a":return a.getMsg("days_abbr")[t.get("day")]; case"A":return a.getMsg("days")[t.get("day")];case"b":return a.getMsg("months_abbr")[t.get("month")];case"B":return a.getMsg("months")[t.get("month")]; case"c":return t.format("%a %b %d %H:%M:%S %Y");case"d":return p(t.get("date"),2);case"e":return p(t.get("date"),2," ");case"H":return p(t.get("hr"),2); case"I":return p((t.get("hr")%12)||12,2);case"j":return p(t.get("dayofyear"),3);case"k":return p(t.get("hr"),2," ");case"l":return p((t.get("hr")%12)||12,2," "); case"L":return p(t.get("ms"),3);case"m":return p((t.get("mo")+1),2);case"M":return p(t.get("min"),2);case"o":return t.get("ordinal");case"p":return a.getMsg(t.get("ampm")); case"s":return Math.round(t/1000);case"S":return p(t.get("seconds"),2);case"T":return t.format("%H:%M:%S");case"U":return p(t.get("week"),2);case"w":return t.get("day"); case"x":return t.format(a.getMsg("shortDate"));case"X":return t.format(a.getMsg("shortTime"));case"y":return t.get("year").toString().substr(2);case"Y":return t.get("year"); case"z":return t.get("GMTOffset");case"Z":return t.get("Timezone");}return u;});},toISOString:function(){return this.format("iso8601");}}).alias({toJSON:"toISOString",compare:"diff",strftime:"format"}); var k=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var g={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M",rfc822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %Z"); },rfc2822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %z");},iso8601:function(s){return(s.getUTCFullYear()+"-"+p(s.getUTCMonth()+1,2)+"-"+p(s.getUTCDate(),2)+"T"+p(s.getUTCHours(),2)+":"+p(s.getUTCMinutes(),2)+":"+p(s.getUTCSeconds(),2)+"."+p(s.getUTCMilliseconds(),3)+"Z"); }};var c=[],n=a.parse;var r=function(v,x,u){var t=-1,w=a.getMsg(v+"s");switch(typeOf(x)){case"object":t=w[x.get(v)];break;case"number":t=w[x];if(!t){throw new Error("Invalid "+v+" index: "+x); }break;case"string":var s=w.filter(function(y){return this.test(y);},new RegExp("^"+x,"i"));if(!s.length){throw new Error("Invalid "+v+" string");}if(s.length>1){throw new Error("Ambiguous "+v); }t=s[0];}return(u)?w.indexOf(t):t;};var i=1900,o=70;a.extend({getMsg:function(t,s){return Locale.get("Date."+t,s);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(t,s){var u=new a; return a.daysInMonth(t!=null?t:u.get("mo"),s!=null?s:u.get("year"))*86400000;},year:function(s){s=s||new a().get("year");return a.isLeapYear(s)?31622400000:31536000000; }},daysInMonth:function(t,s){return[31,a.isLeapYear(s)?29:28,31,30,31,30,31,31,30,31,30,31][t];},isLeapYear:function(s){return((s%4===0)&&(s%100!==0))||(s%400===0); },parse:function(v){var u=typeOf(v);if(u=="number"){return new a(v);}if(u!="string"){return v;}v=v.clean();if(!v.length){return null;}var s;c.some(function(w){var t=w.re.exec(v); return(t)?(s=w.handler(t)):false;});if(!(s&&s.isValid())){s=new a(n(v));if(!(s&&s.isValid())){s=new a(v.toInt());}}return s;},parseDay:function(s,t){return r("day",s,t); },parseMonth:function(t,s){return r("month",t,s);},parseUTC:function(t){var s=new a(t);var u=a.UTC(s.get("year"),s.get("mo"),s.get("date"),s.get("hr"),s.get("min"),s.get("sec"),s.get("ms")); return new a(u);},orderIndex:function(s){return a.getMsg("dateOrder").indexOf(s)+1;},defineFormat:function(s,t){g[s]=t;return this;},defineParser:function(s){c.push((s.re&&s.handler)?s:l(s)); return this;},defineParsers:function(){Array.flatten(arguments).each(a.defineParser);return this;},define2DigitYearStart:function(s){o=s%100;i=s-o;return this; }}).extend({defineFormats:a.defineFormat.overloadSetter()});var d=function(s){return new RegExp("(?:"+a.getMsg(s).map(function(t){return t.substr(0,3); }).join("|")+")[a-z]*");};var m=function(s){switch(s){case"T":return"%H:%M:%S";case"x":return((a.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?"; case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?";}return null;};var j={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,z:/Z|[+-]\d{2}(?::?\d{2})?/}; j.m=j.I;j.S=j.M;var e;var b=function(s){e=s;j.a=j.A=d("days");j.b=j.B=d("months");c.each(function(u,t){if(u.format){c[t]=l(u.format);}});};var l=function(u){if(!e){return{format:u}; }var s=[];var t=(u.source||u).replace(/%([a-z])/gi,function(w,v){return m(v)||w;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(w,v){var x=j[v]; if(!x){return v;}s.push(v);return"("+x.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:u,re:new RegExp("^"+t+"$","i"),handler:function(y){y=y.slice(1).associate(s); var v=new a().clearTime(),x=y.y||y.Y;if(x!=null){q.call(v,"y",x);}if("d" in y){q.call(v,"d",1);}if("m" in y||y.b||y.B){q.call(v,"m",1);}for(var w in y){q.call(v,w,y[w]); }return v;}};};var q=function(s,t){if(!t){return this;}switch(s){case"a":case"A":return this.set("day",a.parseDay(t,true));case"b":case"B":return this.set("mo",a.parseMonth(t,true)); case"d":return this.set("date",t);case"H":case"I":return this.set("hr",t);case"m":return this.set("mo",t-1);case"M":return this.set("min",t);case"p":return this.set("ampm",t.replace(/\./g,"")); case"S":return this.set("sec",t);case"s":return this.set("ms",("0."+t)*1000);case"w":return this.set("day",t);case"Y":return this.set("year",t);case"y":t=+t; if(t<100){t+=i+(t0.75*a){e=c;}break;}f/=a;e=c+"s";}f=f.round();return Date.getMsg(e+d,f).substitute({delta:f});}}).defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime(); switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime(); var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}}).alias("timeAgoInWords","timeDiffInWords"); Locale.define("en-US","Number",{decimal:".",group:",",currency:{prefix:"$ "}});Number.implement({format:function(q){var n=this;q=q?Object.clone(q):{};var a=function(i){if(q[i]!=null){return q[i]; }return Locale.get("Number."+i);};var f=n<0,h=a("decimal"),k=a("precision"),o=a("group"),c=a("decimals");if(f){var e=a("negative")||{};if(e.prefix==null&&e.suffix==null){e.prefix="-"; }["prefix","suffix"].each(function(i){if(e[i]){q[i]=a(i)+e[i];}});n=-n;}var l=a("prefix"),p=a("suffix");if(c!==""&&c>=0&&c<=20){n=n.toFixed(c);}if(k>=1&&k<=21){n=(+n).toPrecision(k); }n+="";var m;if(a("scientific")===false&&n.indexOf("e")>-1){var j=n.split("e"),b=+j[1];n=j[0].replace(".","");if(b<0){b=-b-1;m=j[0].indexOf(".");if(m>-1){b-=m-1; }while(b--){n="0"+n;}n="0."+n;}else{m=j[0].lastIndexOf(".");if(m>-1){b-=j[0].length-m-1;}while(b--){n+="0";}}}if(h!="."){n=n.replace(".",h);}if(o){m=n.lastIndexOf(h); m=(m>-1)?m:n.length;var d=n.substring(m),g=m;while(g--){if((m-g-1)%3==0&&g!=(m-1)){d=o+d;}d=n.charAt(g)+d;}n=d;}if(l){n=l+n;}if(p){n+=p;}return n;},formatCurrency:function(b){var a=Locale.get("Number.currency")||{}; if(a.scientific==null){a.scientific=false;}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);},formatPercentage:function(b){var a=Locale.get("Number.percentage")||{}; if(a.suffix==null){a.suffix="%";}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);}});(function(){var c={a:/[àáâãäåăą]/g,A:/[ÀÁÂÃÄÅĂĄ]/g,c:/[ćčç]/g,C:/[ĆČÇ]/g,d:/[ďđ]/g,D:/[ĎÐ]/g,e:/[èéêëěę]/g,E:/[ÈÉÊËĚĘ]/g,g:/[ğ]/g,G:/[Ğ]/g,i:/[ìíîï]/g,I:/[ÌÍÎÏ]/g,l:/[ĺľł]/g,L:/[ĹĽŁ]/g,n:/[ñňń]/g,N:/[ÑŇŃ]/g,o:/[òóôõöøő]/g,O:/[ÒÓÔÕÖØ]/g,r:/[řŕ]/g,R:/[ŘŔ]/g,s:/[ššş]/g,S:/[ŠŞŚ]/g,t:/[ťţ]/g,T:/[ŤŢ]/g,ue:/[ü]/g,UE:/[Ü]/g,u:/[ùúûůµ]/g,U:/[ÙÚÛŮ]/g,y:/[ÿý]/g,Y:/[ŸÝ]/g,z:/[žźż]/g,Z:/[ŽŹŻ]/g,th:/[þ]/g,TH:/[Þ]/g,dh:/[ð]/g,DH:/[Ð]/g,ss:/[ß]/g,oe:/[œ]/g,OE:/[Œ]/g,ae:/[æ]/g,AE:/[Æ]/g},b={" ":/[\xa0\u2002\u2003\u2009]/g,"*":/[\xb7]/g,"'":/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,"...":/[\u2026]/g,"-":/[\u2013]/g,"»":/[\uFFFD]/g}; var a=function(f,h){var e=f,g;for(g in h){e=e.replace(h[g],g);}return e;};var d=function(e,g){e=e||"";var h=g?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)":"]+)?>",f=new RegExp(h,"gi"); return f;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this; }var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil()); },getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);},truncate:function(e,f,i){var h=this; if(f==null&&arguments.length==1){f="…";}if(h.length>e){h=h.substring(0,e);if(i){var g=h.lastIndexOf(i);if(g!=-1){h=h.substr(0,g);}}if(f){h+=f;}}return h; }});})();String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b; }c.each(function(i){var e=i.indexOf("=")+1,g=e?i.substr(e):"",f=e?i.substr(0,e-1).match(/([^\]\[]+|(\B)(?=\]))/g):[i],h=b;if(!f){return;}if(a){g=decodeURIComponent(g); }f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j0){c.pop(); }else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:""); },set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f}; }else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this; },get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||""; },go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{}; }var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c); }}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/}; a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c); }});})();(function(){Events.Pseudos=function(h,e,f){var d="_monitorEvents:";var c=function(i){return{store:i.store?function(j,k){i.store(d+j,k);}:function(j,k){(i._monitorEvents||(i._monitorEvents={}))[j]=k; },retrieve:i.retrieve?function(j,k){return i.retrieve(d+j,k);}:function(j,k){if(!i._monitorEvents){return k;}return i._monitorEvents[j]||k;}};};var g=function(k){if(k.indexOf(":")==-1||!h){return null; }var j=Slick.parse(k).expressions[0][0],p=j.pseudos,i=p.length,o=[];while(i--){var n=p[i].key,m=h[n];if(m!=null){o.push({event:j.tag,value:p[i].value,pseudo:n,original:k,listener:m}); }}return o.length?o:null;};return{addEvent:function(m,p,j){var n=g(m);if(!n){return e.call(this,m,p,j);}var k=c(this),r=k.retrieve(m,[]),i=n[0].event,l=Array.slice(arguments,2),o=p,q=this; n.each(function(s){var t=s.listener,u=o;if(t==false){i+=":"+s.pseudo+"("+s.value+")";}else{o=function(){t.call(q,s,u,arguments,o);};}});r.include({type:i,event:p,monitor:o}); k.store(m,r);if(m!=i){e.apply(this,[m,p].concat(l));}return e.apply(this,[i,o].concat(l));},removeEvent:function(m,l){var k=g(m);if(!k){return f.call(this,m,l); }var n=c(this),j=n.retrieve(m);if(!j){return this;}var i=Array.slice(arguments,2);f.apply(this,[m,l].concat(i));j.each(function(o,p){if(!l||o.event==l){f.apply(this,[o.type,o.monitor].concat(i)); }delete j[p];},this);n.store(m,j);return this;}};};var b={once:function(e,f,d,c){f.apply(this,d);this.removeEvent(e.event,c).removeEvent(e.original,f); },throttle:function(d,e,c){if(!e._throttled){e.apply(this,c);e._throttled=setTimeout(function(){e._throttled=false;},d.value||250);}},pause:function(d,e,c){clearTimeout(e._pause); e._pause=e.delay(d.value||250,this,c);}};Events.definePseudo=function(c,d){b[c]=d;return this;};Events.lookupPseudo=function(c){return b[c];};var a=Events.prototype; Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent));["Request","Fx"].each(function(c){if(this[c]){this[c].implement(Events.prototype);}});})(); (function(){var d={relay:false},c=["once","throttle","pause"],b=c.length;while(b--){d[c[b]]=Events.lookupPseudo(c[b]);}DOMEvent.definePseudo=function(e,f){d[e]=f; return this;};var a=Element.prototype;[Element,Window,Document].invoke("implement",Events.Pseudos(d,a.addEvent,a.removeEvent));})();(function(){var b=function(e,d){var f=[]; Object.each(d,function(g){Object.each(g,function(h){e.each(function(i){f.push(i+"-"+h+(i=="border"?"-width":""));});});});return f;};var c=function(f,e){var d=0; Object.each(e,function(h,g){if(g.test(f)){d=d+h.toInt();}});return d;};var a=function(d){return !!(!d||d.offsetHeight||d.offsetWidth);};Element.implement({measure:function(h){if(a(this)){return h.call(this); }var g=this.getParent(),e=[];while(!a(g)&&g!=document.body){e.push(g.expose());g=g.getParent();}var f=this.expose(),d=h.call(this);f();e.each(function(i){i(); });return d;},expose:function(){if(this.getStyle("display")!="none"){return function(){};}var d=this.style.cssText;this.setStyles({display:"block",position:"absolute",visibility:"hidden"}); return function(){this.style.cssText=d;}.bind(this);},getDimensions:function(d){d=Object.merge({computeSize:false},d);var i={x:0,y:0};var h=function(j,e){return(e.computeSize)?j.getComputedSize(e):j.getSize(); };var f=this.getParent("body");if(f&&this.getStyle("display")=="none"){i=this.measure(function(){return h(this,d);});}else{if(f){try{i=h(this,d);}catch(g){}}}return Object.append(i,(i.x||i.x===0)?{width:i.x,height:i.y}:{x:i.width,y:i.height}); },getComputedSize:function(d){d=Object.merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},d);var g={},e={width:0,height:0},f; if(d.mode=="vertical"){delete e.width;delete d.planes.width;}else{if(d.mode=="horizontal"){delete e.height;delete d.planes.height;}}b(d.styles,d.planes).each(function(h){g[h]=this.getStyle(h).toInt(); },this);Object.each(d.planes,function(i,h){var k=h.capitalize(),j=this.getStyle(h);if(j=="auto"&&!f){f=this.getDimensions();}j=g[h]=(j=="auto")?f[h]:j.toInt(); e["total"+k]=j;i.each(function(m){var l=c(m,g);e["computed"+m.capitalize()]=l;e["total"+k]+=l;});},this);return Object.append(e,g);}});})();Element.implement({isDisplayed:function(){return this.getStyle("display")!="none"; },isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"](); },hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none"); },show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a); },swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(window.getSelection){var a=window.getSelection(); if(a&&a.removeAllRanges){a.removeAllRanges();}}else{if(document.selection&&document.selection.empty){try{document.selection.empty();}catch(b){}}}}});var Asset={javascript:function(d,b){if(!b){b={}; }var a=new Element("script",{src:d,type:"text/javascript"}),e=b.document||document,c=b.onload||b.onLoad;delete b.onload;delete b.onLoad;delete b.document; if(c){if(typeof a.onreadystatechange!="undefined"){a.addEvent("readystatechange",function(){if(["loaded","complete"].contains(this.readyState)){c.call(this); }});}else{a.addEvent("load",c);}}return a.set(b).inject(e.head);},css:function(d,a){if(!a){a={};}var b=new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:d}); var c=a.onload||a.onLoad,e=a.document||document;delete a.onload;delete a.onLoad;delete a.document;if(c){b.addEvent("load",c);}return b.set(a).inject(e.head); },image:function(c,b){if(!b){b={};}var d=new Image(),a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var g="on"+e,f="on"+e.capitalize(),h=b[g]||b[f]||function(){}; delete b[f];delete b[g];d[g]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;h.delay(1,a,a); a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(c,b){c=Array.from(c);var d=function(){},a=0; b=Object.merge({onComplete:d,onProgress:d,onError:d,properties:{}},b);return new Elements(c.map(function(f,e){return Asset.image(f,Object.append(b.properties,{onload:function(){a++; b.onProgress.call(this,a,e,f);if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,e,f);if(a==c.length){b.onComplete();}}})); }));}}; Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a)},compute:function(g,h,j){var c={};for(var d in g){var a=g[d],e=h[d],f=c[d]={};for(var b in a){f[b]=this.parent(a[b],e[b],j)}}return c},set:function(b){for(var c in b){if(!this.elements[c]){continue}var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit)}}return this},start:function(c){if(!this.check(c)){return this}var h={},j={};for(var d in c){if(!this.elements[d]){continue}var f=c[d],a=h[d]={},g=j[d]={};for(var b in f){var e=this.prepare(this.elements[d],b,f[b]);a[b]=e.from;g[b]=e.to}}return this.parent(h,j)}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,resetHeight:true},initialize:function(){var g=function(h){return h!=null};var f=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:g,elements:g});this.parent(f.elements,f.options);var b=this.options,e=this.togglers=$$(f.togglers);this.previous=-1;this.internalChain=new Chain();if(b.alwaysHide){this.options.link="chain"}if(b.show||this.options.show===0){b.display=false;this.previous=b.show}if(b.start){b.display=false;b.show=false}var d=this.effects={};if(b.opacity){d.opacity="fullOpacity"}if(b.width){d.width=b.fixedWidth?"fullWidth":"offsetWidth"}if(b.height){d.height=b.fixedHeight?"fullHeight":"scrollHeight"}for(var c=0,a=e.length;c=0?a-1:0)).chain(d)}else{d()}return this},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display"))}.bind(this);if(!b){this.togglers.each(a)}else{a(b)}return this},display:function(b,c){if(!this.check(b,c)){return this}var h={},g=this.elements,a=this.options,f=this.effects;if(c==null){c=true}if(typeOf(b)=="element"){b=g.indexOf(b)}if(b==this.previous&&!a.alwaysHide){return this}if(a.resetHeight){var e=g[this.previous];if(e&&!this.selfHidden){for(var d in f){e.setStyle(d,e[f[d]])}}}if((this.timer&&a.link=="chain")||(b===this.previous&&!a.alwaysHide)){return this}this.previous=b;this.selfHidden=false;g.each(function(l,k){h[k]={};var j;if(k!=b){j=true}else{if(a.alwaysHide&&((l.offsetHeight>0&&a.height)||l.offsetWidth>0&&a.width)){j=true;this.selfHidden=true}}this.fireEvent(j?"background":"active",[this.togglers[k],l]);for(var m in f){h[k][m]=j?0:l[f[m]]}if(!c&&!j&&a.resetHeight){h[k].height="auto"}},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(a.resetHeight&&!this.selfHidden){var i=g[b];if(i){i.setStyle("height","auto")}}}.bind(this));return c?this.start(h):this.set(h).internalChain.callChain()}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var a=Array.link(arguments,{container:Type.isElement});this.container=a.container},addSection:function(c,b,e){c=document.id(c);b=document.id(b);var d=this.togglers.contains(c);var a=this.togglers.length;if(a&&(!d||e)){e=e!=null?e:a-1;c.inject(this.togglers[e],"before");b.inject(c,"after")}else{if(this.container&&!d){c.inject(this.container);b.inject(this.container)}}return this.parent.apply(this,arguments)}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c);this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body)}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this);this.addEvent("start",function(){d.addEvent("mousewheel",e)},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e)},true)}},set:function(){var b=Array.flatten(arguments);if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])]}this.element.scrollTo(b[0],b[1]);return this},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b)})},start:function(c,d){if(!this.check(c,d)){return this}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d])},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f};for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e]}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e]}i[e]+=c[e]}return[i.x,i.y]},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0))},toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false))},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false))},toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"))},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll();var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false});return this.start.apply(this,this.calculateScroll(b.x,b.y))},toElementEdge:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y};["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k]}if(f[k]this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element)}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault()}this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1}if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1]}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]d.left&&b.xd.top)},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed])}if(a){this.fireEvent("enter",[this.element,a])}this.overed=a}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables()}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a)}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a);this.store("dragger",b);return b}});(function(){var a=function(d){var b=d.options.hideInputs;if(window.OverText){var c=[null];OverText.each(function(e){c.include("."+e.options.labelClass)});if(c){b+=c.join(", ")}}return(b)?d.element.getElements(b):null};Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:"cancel",styles:["padding","border","margin"],transitionOpacity:!Browser.ie6,mode:"vertical",display:function(){return this.element.get("tag")!="tr"?"block":"table-row"},opacity:1,hideInputs:Browser.ie?"select, input, textarea, object, embed":null},dissolve:function(){if(!this.hiding&&!this.showing){if(this.element.getStyle("display")!="none"){this.hiding=true;this.showing=false;this.hidden=true;this.cssText=this.element.style.cssText;var d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});if(this.options.transitionOpacity){d.opacity=this.options.opacity}var c={};Object.each(d,function(f,e){c[e]=[f,0]});this.element.setStyles({display:Function.from(this.options.display).call(this),overflow:"hidden"});var b=a(this);if(b){b.setStyle("visibility","hidden")}this.$chain.unshift(function(){if(this.hidden){this.hiding=false;this.element.style.cssText=this.cssText;this.element.setStyle("display","none");if(b){b.setStyle("visibility","visible")}}this.fireEvent("hide",this.element);this.callChain()}.bind(this));this.start(c)}else{this.callChain.delay(10,this);this.fireEvent("complete",this.element);this.fireEvent("hide",this.element)}}else{if(this.options.link=="chain"){this.chain(this.dissolve.bind(this))}else{if(this.options.link=="cancel"&&!this.hiding){this.cancel();this.dissolve()}}}return this},reveal:function(){if(!this.showing&&!this.hiding){if(this.element.getStyle("display")=="none"){this.hiding=false;this.showing=true;this.hidden=false;this.cssText=this.element.style.cssText;var d;this.element.measure(function(){d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode})}.bind(this));if(this.options.heightOverride!=null){d.height=this.options.heightOverride.toInt()}if(this.options.widthOverride!=null){d.width=this.options.widthOverride.toInt()}if(this.options.transitionOpacity){this.element.setStyle("opacity",0);d.opacity=this.options.opacity}var c={height:0,display:Function.from(this.options.display).call(this)};Object.each(d,function(f,e){c[e]=0});c.overflow="hidden";this.element.setStyles(c);var b=a(this);if(b){b.setStyle("visibility","hidden")}this.$chain.unshift(function(){this.element.style.cssText=this.cssText;this.element.setStyle("display",Function.from(this.options.display).call(this));if(!this.hidden){this.showing=false}if(b){b.setStyle("visibility","visible")}this.callChain();this.fireEvent("show",this.element)}.bind(this));this.start(d)}else{this.callChain();this.fireEvent("complete",this.element);this.fireEvent("show",this.element)}}else{if(this.options.link=="chain"){this.chain(this.reveal.bind(this))}else{if(this.options.link=="cancel"&&!this.showing){this.cancel();this.reveal()}}}return this},toggle:function(){if(this.element.getStyle("display")=="none"){this.reveal()}else{this.dissolve()}return this},cancel:function(){this.parent.apply(this,arguments);if(this.cssText!=null){this.element.style.cssText=this.cssText}this.hiding=false;this.showing=false;return this}});Element.Properties.reveal={set:function(b){this.get("reveal").cancel().setOptions(b);return this},get:function(){var b=this.retrieve("reveal");if(!b){b=new Fx.Reveal(this);this.store("reveal",b)}return b}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(b){this.get("reveal").setOptions(b).reveal();return this},dissolve:function(b){this.get("reveal").setOptions(b).dissolve();return this},nix:function(b){var c=Array.link(arguments,{destroy:Type.isBoolean,options:Type.isObject});this.get("reveal").setOptions(b).dissolve().chain(function(){this[c.destroy?"destroy":"dispose"]()}.bind(this));return this},wink:function(){var c=Array.link(arguments,{duration:Type.isNumber,options:Type.isObject});var b=this.get("reveal").setOptions(c.options);b.reveal().chain(function(){(function(){b.dissolve()}).delay(c.duration||2000)})}})})();Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left");if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()))}return this.parent(b.position(Object.merge({},this.options,a,{returnPos:true})))}});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"});this.store("move",a)}return a}};Element.implement({move:function(a){this.get("move").start(a);return this}}); EOL.namespace('belowFold'); /** * If set to true, the belowCallback will be triggered offset px from the top of the page. * If set to false, the belowCallback will be triggered offset px + viewport height from the top of * the page. */ EOL.belowFold.checkOffsetOnly = false; EOL.belowFold.isBelow = false; EOL.belowFold.offset = 0; EOL.belowFold.belowCallback = function(){} EOL.belowFold.aboveCallback = function(){} /** * * @param offset integer offset of number of pixels to wait for until below the fold. * @param belowCallback is the callback function executed when */ EOL.belowFold.init = function(offset, checkOffsetOnly, belowCallback, aboveCallback){ EOL.belowFold.offset = offset; EOL.belowFold.checkOffsetOnly = checkOffsetOnly; EOL.belowFold.belowCallback = belowCallback; EOL.belowFold.aboveCallback = aboveCallback; window.addEvent('scroll', EOL.belowFold.callback); } EOL.belowFold.isBelowFold = function(){ scrollTop = EOL.belowFold.getScrollTop(); height = document.documentElement.clientHeight if (EOL.belowFold.checkOffsetOnly){ return EOL.belowFold.offset < scrollTop; } else { return (height + EOL.belowFold.offset) < scrollTop; } } EOL.belowFold.callback = function(){ wasBelowFold = EOL.belowFold.isBelow; EOL.belowFold.isBelow = EOL.belowFold.isBelowFold(); if (wasBelowFold && !EOL.belowFold.isBelow){ EOL.belowFold.aboveCallback(); } else if (!wasBelowFold && EOL.belowFold.isBelow) { //console.log('was not below fold and is now'); EOL.belowFold.belowCallback(); } } EOL.belowFold.getScrollTop = function() { if(typeof pageYOffset!= 'undefined'){ //most browsers return pageYOffset; } else{ var B= document.body; //IE 'quirks' var D= document.documentElement; //IE with doctype D= (D.clientHeight)? D: B; return D.scrollTop; } }